键字段相同时仅显示一行

时间:2017-01-24 07:18:06

标签: sql-server

我通过连接两列(A& C)创建了一个关键字段(C)。我想运行一个sql,如果列C是唯一的,则只占最上一行。

示例数据: -

A                B                C                  D
10022            Blue             10022Blue          Buggy
10300            Red              10300Red           Noodle
10300            Red              10300Red           Sammy 

所以我只想要为10300Red显示一行

干杯

3 个答案:

答案 0 :(得分:1)

一种方法是使用cte和ROW_NUMBER()

;WITH CTE AS
(
    SELECT A, 
           B, 
           C, 
           D, 
           ROW_NUMBER() OVER(PARTITION BY C ORDER BY (SELECT NULL)) rn
    FROM Table
)

SELECT A, B, C, D
FROM CTE
WHERE rn = 1

注意:您确实说过您想要“第一个”记录,但您没有指定记录的顺序。由于关系数据库中的表本质上是未排序的,因此“first”只是一个任意行,因此“order by (select null)

答案 1 :(得分:0)

这样做:

select distinct A, B, C from tablename

答案 2 :(得分:0)

您可以通过分组找到结果集,然后将其与主表连接。

SELECT
    A.*
FROM
    YourTable A INNER JOIN 
    (
        SELECT
            G.C,
            MAX(G.D) D
        FROM
            YourTable G
        GROUP BY
            G.C
    ) B ON A.C = B.C AND A.D = B.D