[英]Select distinct columns sql server
我有一个表,其中包含identity primary key id
, CNum
, CUID
和其他一些列。 我想基于CNum
和CUID
选择不同的记录,换句话说,如果两个记录具有相同的CNum
和CUID
我想获得最高的记录,我尝试进行分组,但由于需要整行,因此无法工作。
with a as (SELECT distinct CNum, CUID
FROM Con)
select c.CNum from Con c inner join
a on a.CNum = c.CNum
and a.CUID= c.CUID
order by id
这种方法仍然会得到重复的记录。
有人知道如何解决问题吗?
如果要选择具有相同特征的一组行的第一行,则可以使用ROW_NUMBER()函数和PARTITION BY子句。 像这样:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY CNum, CUID ORDER BY Id) AS ROWNUM
FROM Con
) x WHERE x.ROWNUM = 1
子查询将行号添加到具有相同的CNum / CUID值的每一行。
您缺少与最终选择声明distinct
信息
select distinct c.CNum
from Con c
inner join a on a.CNum = c.CNum and a.CUID= c.CUID
order by id
也许我误会了,但是我不认为您应该在查询中包含from Con c
中的内容。
您已经将Con
包含在CTE中,在那里获得了不同的值。 如果您再次在此处使用它,则CTE毫无意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.