T-SQL-单个查询来评估2种不同的条件

时间:2014-10-15 16:59:12

标签: sql-server-2008 tsql compare max

我的表中有2列TeamKey和Counter。

我需要做的是,当有不同的TeamKey值时,我需要选择具有最大计数器值的值。我需要做的另一件事是,当所有计数器值相同时,我需要选择具有最大值的团队密钥。

到目前为止,我已经能够实现第1部分,我使用ROW_NUMBER函数(以及内连接)选择具有最大计数器值的teamKey,但我在如何编写第2部分时画了一个空白当所有计数器值相同时选择max(teamKey)。

TeamKey Counter
  203     297
  203     761
  203     98
  234     932

对于场景1:我会选择TeamKey = 234,因为Counter值为932(此数据集中的最大(计数器)值)。但是在第二种情况下,当所有计数器值相同时,我需要选择MAX(TeamKey)。例如:

TeamKey Counter
  203     1
  203     1
  98      1
  981     1
  394     1

因此,在上面的数据集中,我会选择TeamKey = 981,因为计数器值都是相同的,但TeamKey = 981是最大的TeamKey值。

换句话说,当计数器值不同时,选择具有最大计数器值的TeamKey。要么。如果计数器值完全相同,则选择MAX(TeamKey)值。

以下是我使用一些测试数据设置的SQL Fiddle。如果您需要更多信息,我将非常乐意与您分享详细信息。感谢您抽出宝贵时间阅读问题。

2 个答案:

答案 0 :(得分:1)

所以,如果有一个最大计数器,你想要那一行,当它被绑定时你想要最高的团队密钥的顶级计数器?如果是这样,这就是你所需要的;)

select top 1 teamkey
       , counter
from testresults
order by counter desc
       , teamkey desc

答案 1 :(得分:0)

试试这个

SELECT MAX(Counter) FROM TestResults where exists (select count(distinct teamkey) from TestResults having count(distinct teamkey)>1)
SELECT MAX(Teamkey) FROM TestResults2 where exists (select count(distinct counter) from TestResults2 having count(distinct counter)=1)