T-SQL根据另一列的最高值选择distinct

时间:2017-03-03 10:43:42

标签: tsql

我有一个表格,其中包含该试用版的tryoutscustomerIDstatus以及其他一些包含各种数据的列。

当然,单个customerID可以有多个tryouts(在实际表中,第一个试用版是1号,第二个是2号等)。

实施例。

  
      
  • 客户ID = 1,tryout = 1
  •   
  • 客户ID = 1,tryout = 2
  •   
  • 客户ID = 1,tryout = 3
  •   
  • 客户ID = 2,tryout = 1
  •   
  • 客户ID = 3,tryout = 1
  •   
  • 客户ID = 3,tryout = 2
  •   

我希望拥有所有不同的customerIDs,但每个只有一行,其中包含一个表中每个客户的最高tryout数字,以及来自所有其他列的数据。 防爆。 tryoutscustomerIDstatusdata1data2

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

如果您只想要客户ID和试用价值,那么您可以尝试以下方法:

SELECT customerID, MAX(tryout) AS max_tryout
FROM yourTable
GROUP BY customerID

如果您想要整个记录,那么一个选项就是使用ROW_NUMBER()

SELECT t.customerID, t.tryout, t.status, t.data1, t.data2
FROM
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY customerID ORDER BY tryout DESC) rn
) t
WHERE t.rn = 1

答案 1 :(得分:0)

尝试

SELECT
    CustomerID,
    MAX(tryout) AS [Max tryout]
FROM
    TheTable
GROUP BY
   CustomerID

这可以给你你想要的东西