繁体   English   中英

选择不同的列SQL Server

[英]Select distinct columns sql server

我有一个表,其中包含identity primary key idCNumCUID和其他一些列。 我想基于CNumCUID选择不同的记录,换句话说,如果两个记录具有相同的CNumCUID我想获得最高的记录,我尝试进行分组,但由于需要整行,因此无法工作。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM