我想获得一个表的子集,这是示例:
1 A
2 A
3 B
4 B
5 C
6 D
7 D
8 D
我想获得唯一的记录,但ID最小:
1 A
3 B
5 C
6 D
如何在SQL Server中编写SQL?谢谢!
答案 0 :(得分:4)
使用这样的公用表表达式:
;WITH DataCTE AS
(
SELECT ID, OtherCol,
ROW_NUM() OVER(PARTITION BY OtherCol ORDER BY ID) 'RowNum'
FROM dbo.YourTable
)
SELECT *
FROM DataCTE
WHERE RowNum = 1
这会根据您拥有的第二列(A, B, C
)对您的数据进行“分区”,并按ID
(1, 2, 3
)排序 - 最小ID。
因此,对于每个“分区”(即第二列的每个值),RowNum = 1
的条目是第二列的每个值的ID最小的条目。
答案 1 :(得分:3)
select min(id), othercol
from thetable
group by othercol
也许与
order by othercol
......最后如果那很重要
答案 2 :(得分:3)
试试这个:
SELECT MIN(Id) AS Id, Name
FROM MyTable
GROUP BY Name
答案 3 :(得分:2)
select min(id), column2
from table
group by column2
如果您在问题中提供表格信息会有所帮助 - 我只是猜到了列名......