我有一个SQL查询,我需要从表A中获取大部分列,从表B中获取1列。我使用非唯一值来连接这两个表。
表B中我需要的一列是日期。如何使查询返回表B中找到的多行中的最大日期值(如果它们中的任何一个具有日期)。如果他们都没有约会,我希望它返回null。
这是我的查询的样子
SELECT A.ID,
A.field1,
A.field2,
B.date
FROM TableA A
LEFT JOIN TableB B
ON A.ID = B.ID
现在,它正在回归
ID, field1, field2, date
1 a a null
1 a a 1/1/2014
1 a a 1/1/2015
2 b b null
2 b b null
2 b b null
我希望它返回的是
ID, field1, field2, date
1 a a 1/1/2015
2 b b null
由于A中的每个ID都返回B中的多行,我只想要具有最大日期的行中的日期值(如果没有包含日期值,则为null)。
答案 0 :(得分:2)
使用MAX和GROUP BY
<Image x:Name="MyImg" Source="{Binding Path=Content}"/>
答案 1 :(得分:0)
尝试在查询结束时添加GROUP BY A.ID,A.field1,A.field2以获得正确的结果。
答案 2 :(得分:0)
下面也应该有用
SELECT A.ID,
A.field1,
A.field2,
(SELECT MAX(B.date) FROM TableB B WHERE B.id= A.id GROUP BY id) maxDate
FROM TableA A