如何根据其他列值选择列的最大值?

时间:2017-01-13 17:20:28

标签: sql sql-server sql-server-2008 tsql

我正在查看一个像这样设置的表:

Month  |  Year  |  Item  
1      |  2016  |  a
1      |  2016  |  b
1      |  2016  |  c
2      |  2016  |  a
2      |  2016  |  b
2      |  2016  |  c
3      |  2016  |  a
3      |  2016  |  b

当a,b和c都存在时,我希望获得最高月份和年份值,在本例中为2016年。

1 个答案:

答案 0 :(得分:2)

允许出现在Item列中的其他值,您可以使用:

SELECT TOP (1) Year, Month
FROM myTable
WHERE Item in ('a', 'b', 'c')
GROUP BY Year, Month
HAVING COUNT(DISTINCT Item) = 3
ORDER BY Year DESC, Month DESC

如果你的项目价值只是' a',' b'或者' c'那么你可以省略where子句。