2015-06-15 55 views
2

這裏的基團後的值由是該數據的樣本:只有不同在SQL Server 2014

ID  Value NumPeriod 
------------------------  
1681642 596.8 2 
1681642 596.8 3 
1681663 445.4 2 
1681663 445.4 3 
1681688 461.9 3 
1681707 282.2 3 
1681724 407.1 3 
1681743 467  2 
1681743 467  3 
1681767 502  3 

欲組由[ID],並採取內只[數值]的不同值每個組根據[NumPeriod]並且採取「第一」不同[Value]。所以結果看起來會是這樣的:

ID  Value NumPeriod 
-------------------------  
1681642 596.8 2 
1681663 445.4 2 
1681688 461.9 3 
1681707 282.2 3 
1681724 407.1 3 
1681743 467  2 
1681767 502  3 

所以,我雖然像這樣的工作,但沒有運氣:

select 
    ID, distinct(Value), NumPeriod 
from 
    MyTable 
group by 
    ID, Value, NumPeriod 
order by 
    ID, NumPeriod 

任何幫助,將不勝感激。謝謝!

+1

'distinct'不是函數。它是一個「形容詞」,主要修改'SELECT'和'COUNT()'。放棄使用它的想法,就好像它是一個函數。 –

回答

5

您可以使用排序功能和CTE:

WITH CTE AS 
(
    SELECT ID, Value, NumPeriod, 
      RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NumPeriod ASC) 
    FROM MyTable 
) 
SELECT ID, Value, NumPeriod 
FROM CTE 
WHERE RN = 1 
ORDER BY ID, Value 
0

我認爲,所有你必須改變是你撥打不同。 試試這個:

select distinct ID, Value, NumPeriod 
from MyTable 
group by ID, Value, NumPeriod 
order by ID, NumPeriod