我希望从表B中获取最长日期,但我不了解该错误。我是SAS程序员,是SQL的新手。
select a.*
, b.ZIP_CD
, b.date
from DataA as a
left join DataB as b on a.name = b.name
group by a.name
having max(b.date) = b.date
错误消息是:
信息8121,第16级,状态1,第14行
在HAVING子句中,“ Datab.Date”列无效,因为它既不在聚合函数中也不在GROUP BY子句中。
答案 0 :(得分:1)
使用相关子查询(或类似技术):
select a.*, b.ZIP_CD, b.date
from DataA a join
DataB b
on a.name = b.name
where b.date = (select max(b2.date) from DataB b2 where b2.name = b.name);
这不是聚合查询。
顺便说一句,如果您需要最大值,那么您正在寻找inner join
。如果您仍想保留a
中不存在的b
值,则:
select a.*, b.ZIP_CD, b.date
from DataA a join
DataB b
on a.name = b.name and
b.date = (select max(b2.date) from DataB b2 where b2.name = b.name);