在SQL中选择多列时如何使用distinct

时间:2015-02-11 07:11:36

标签: sql sql-server sql-server-2008 distinct common-table-expression

我使用简单的内连接语句并将结果输入到CTE表中。我想从CTE中选择不同的'ServiceId'。我有以下查询

  SELECT DISTINCT(ServicesId), ServiceNo, ServiceDate, DealerCode FROM CTE_Temp

假设CTE中有重复的ServiceId条目,那么我只想选择第一个条目而忽略其余条目。

1 个答案:

答案 0 :(得分:3)

您可以使用ROW_NUMBER() OVER()。只需替换ORDER BY中的列即可定义首先的内容。

;WITH AnotherCTE AS(
    SELECT 
        ServicesId, ServiceNo, ServiceDate, DealerCode,
        RN = ROW_NUMBER() OVER(PARTITION BY ServicesID ORDER BY ServiceDate DESC)
    FROM CTE_Temp
)
SELECT 
    ServicesId, ServiceNo, ServiceDate, DealerCode
FROM AnotherCTE
WHERE RN = 1