SQL Server Select Group by无法分组

时间:2015-11-18 16:12:47

标签: sql sql-server group-by

我有这张桌子:

ID  TXT VL 
----------
1   A   1
2   B   0
4   C   0
6   D   0
10  D   0
13  E   0
14  C   0
15  E   0

我不知道如何才能选择TXT这样的第一个外观:

ID  TXT VL 
----------
1   A   1
2   B   0
4   C   0
6   D   0
13  E   0

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

select t1.* 
from tbl t1 
join (select min(id) as id from tbl group by txt) t2 on t1.id = t2.id

在临时表中,您可以找到每个uniq txt的所有第一次出现,然后将其与原始表连接。

答案 1 :(得分:1)

您可以使用ROW_NUMBER() OVER执行此操作,如下所示:

WITH CTE AS (
      SELECT *
           , ROW_NUMBER() OVER (PARTITION BY TXT ORDER BY ID) AS RowN
      FROM table
)
SELECT ID, TXT, VL
FROM CTE
WHERE RowN = 1

希望有所帮助:)

更多阅读: https://msdn.microsoft.com/en-us/library/ms189461.aspxhttps://msdn.microsoft.com/en-us/library/ms186734.aspx