查询此表

时间:2016-05-16 08:24:25

标签: sql tsql

如何在下表中给出以下结果的查询,表示当一个人有93年的记录时才显示它但是如果没有记录就给出了92年

表: enter image description here

结果: enter image description here

1 个答案:

答案 0 :(得分:1)

您可以将ROW_NUMBER()CASE EXPRESSION

一起使用
SELECT t.code,t.name,t.year
FROM (SELECT s.*,ROW_NUMBER() OVER (PARTITION BY s.name
                                    ORDER BY CASE WHEN s.year = 92 then 1
                                                  WHEN s.year = 93 then 2
                                                  ELSE 3
                                             END) as rnk
      FROM YourTable s) t
WHERE t.rnk = 1

我还考虑了多年后92,93(优先考虑最后一次)的案例