0

我需要为给定列打印相应的最高年份和最高季度。

输入在表格中:

cityprogram          year          quarter
===========          ====          =======
Abc                  1998             1
Abc                  1999             4
Abc                  1999             4
Abc                  1998             3
xyz                  1998             4
xyz                  1998             1
xyz                  2000             3

它应该打印

Abc                 1999             4
xyz                 2000             3

我尝试了很多连接,最大条件,我似乎都得到了第 4 和第 4 季度 :( 谢谢

4

1 回答 1

2

使用像公共表表达式中的窗口函数:ROW_NUMBER

WITH CTE AS(
     SELECT [cityprogram], [year], [quarter],
            RN = ROW_NUMBER() OVER (
                   PARTITION BY [cityprogram]
                   ORDER BY [year] DESC, [quarter] DESC)
     FROM dbo.TableName 
)
SELECT [cityprogram], [year], [quarter]
FROM CTE
WHERE RN = 1

演示

CITYPROGRAM     YEAR    QUARTER
Abc             1999      4
xyz             2000      3

ROW_NUMBER即使有联系(具有相同最高年份+季度的城市计划),每组也只返回一行。如果你想显示所有最高的,你可以ROW_NUMBERDENSE_RANK.

于 2013-06-21T08:18:34.587 回答