很抱歉是noob,但在创建此查询时需要一些帮助:
表
id | C | S | T
--- |--- |--- |---
1 |C1 |S1 |DA
2 |C1 |S1 |DA
3 |C1 |S1 |DB
4 |C2 |S3 |DA
5 |C1 |S2 |DC
需要为每个唯一的C(ID最小)显示第一行
所以最终结果看起来像(C1和C2是唯一的,C1只显示第一行,因为ID是1):
id | C | S | T
--- |--- |--- |---
1 |C1 |S1 |DA
4 |C2 |S3 |DA
你能帮帮忙吗?
我尝试玩不同的内部连接,但不能得到任何好的结果。
答案 0 :(得分:1)
我建议row_number()
:
select id, c, s, t
from (select t.*, row_number() over (partition by c order by id) as seqnum
from t
) t
where seqnum = 1
答案 1 :(得分:1)
通过分区使用ROW_NUMBER()功能,您将能够创建组,这些组将根据以1 to n
开头的C列中的值为每个组提供行号。要选择第一行,您可以使用RowNum = 1
;
With TableCTE
As
(
SELECT id, C, S, T, ROW_NUMBER()(Partition by C Order by Id) as RowNum
From TableName
)
SELECT * FROM TableCtE
WHERE RowNum = 1;
答案 2 :(得分:-1)
您可以使用C对所有其他列的MIN进行分组
SELECT MIN(id),
C,
MIN(S),
MIN(T)
FROM table
GROUP BY C
结果
id C S T
1 C1 S1 DA
4 C2 S3 DA