假设我们有下表:
A B C Year
----- ---- ---- -----
ABC Val1 Val2 2015
ABC Val3 Val4 2016
ABC Val6 Val7 2017
ABC Val8 Val9 2018
XYZ Val10 Val9 2016
XYZ Val3 Val4 2017
WRD Val1 Val2 2015
WRD Va2 Val9 2017
----------------------------
您可以看到列A和Year之间的关系是1:n 问题:考虑到以下情况,我不知道如何编写一个SQL查询以打印出A,B,C和D的色散值的SQL查询: 如果列A的相应年份是2018,则打印该行(A,B,C,Year),否则打印max(year)行。这意味着answear应该是以下内容:
A B C Year
----- ---- ---- -----
ABC Val8 Val9 2018
XYZ Val3 Val4 2017
WRD Va2 Val9 2017
非常感谢
答案 0 :(得分:1)
您的样本数据表明:
select t.*
from table t
where year = (select max(t1.year) from table t1 where t1.a = t.a);
答案 1 :(得分:1)
为了完整起见,我假设您的数据可能包含> 2018年的日期,而您仍然希望选择2018年;在这种情况下:
SELECT *
FROM testdata
WHERE Year = (
SELECT COALESCE(MAX(CASE WHEN Year = 2018 THEN Year END), MAX(Year))
FROM testdata t1
WHERE A = testdata.A
)