我试图通过加入两个表来确定以下内容: TableA:包含1列由唯一ID组成的列 TableB:包含多个列,一个列包含同一组唯一ID,但也包含一年中每一天的日期列。 例如:
Table A
Unique ID
1
2
3
Table B
UniqueID Date Column3 Column4
1 10/11/15
2 10/11/15
1 11/11/15
2 11/11/15
3 11/11/15
我希望查询输出一个具有唯一ID的表以及它们在表B中出现的第一天。因此,对于唯一的1和2,仅输出第一个日期,对于唯一3,仅输出第二个日期日期。
这可能吗?
由于
答案 0 :(得分:2)
根据上面的例子,JOIN部分是不必要的,但是如果你实际上只想要包含在第一个表中的记录,你可以这样做INNER JOIN
。
SELECT tb.UniqueID, MIN(DATE) as [Date] FROM [Table B] tb
INNER JOIN [Table_A] ta ON ta.[Unique ID] = tb.UniqueID
GROUP BY tb.UniqueID
我已经使用了你的表名和列名,尽管缺乏命名一致性,以及你的表和列中都有空格。 (就个人而言,我在任何SQL实现中都反对这一点,但那是一个单独的问题。)
如果没有加入,您只需要做...
SELECT UniqueID, MIN(DATE) as [Date] FROM [Table B]
GROUP BY UniqueID
答案 1 :(得分:1)
这是group by
:
select uniqueID, min(Date)
from b
group by uniqueID;
除非INNER JOIN
缺少某些ID,否则您甚至不需要b
。
答案 2 :(得分:0)
如果表A是您的主表,可能有时候表A中的ID尚未在表B中找到,在这种情况下,您仍然希望输出表A中具有相应日期的所有值(如果找不到匹配项,则为NULL):
SELECT A.UniqueID, MIN(DATE) as [Date] FROM [Table A] A
LEFT JOIN [Table_B] B ON A.Unique ID = B.UniqueID
GROUP BY A.UniqueID