2015-06-15 51 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