我通过连接两列(A& C)创建了一个关键字段(C)。我想运行一个sql,如果列C是唯一的,则只占最上一行。
示例数据: -
A B C D
10022 Blue 10022Blue Buggy
10300 Red 10300Red Noodle
10300 Red 10300Red Sammy
所以我只想要为10300Red显示一行
干杯
答案 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