下面是表格
id projectid statusid
100 2971 1
101 4637 1
102 4637 2
103 6144 2
104 6510 1
基本上我想要所有的id,projectid,其状态为1,如果1不可用,则其statusid为2,如下面的结果。如果我们同时拥有这两个状态,那么只有1个应该来
id projectid statusid
100 2971 1
101 4637 1
103 6144 2
104 6510 1
我尝试了联盟,但我拿了3个临时表来实现它寻找更好的选择。
答案 0 :(得分:1)
以下是使用Row_Number
和Top 1 with ties
select top 1 with ties *
from yourtable
order by row_number()over(partition by projectid order by statusid asc)
答案 1 :(得分:0)
使用Row_Number
;WITH CTE
AS
(
SELECT
RN = ROW_NUMBER() OVER(PARTITION BY [Id] ORDER BY statusid ASC),
Id,
ProjectId,
statusid
FROM YourTable
)
SELECT
Id,
ProjectId,
statusid
FROM CTE
WHERE RN = 1