基于同一列中的条件的sql列
下面是表格基于同一列中的条件的sql列,sql,sql-server,Sql,Sql Server,下面是表格 id projectid statusid 100 2971 1 101 4637 1 102 4637 2 103 6144 2 104 6510 1 基本上我想要所有的id,projectid,其状态为1,如果1不可用,那么其状态id为2的id,如下面的结果。如果我们有两个状态,那么只有1个应该出现 id
id projectid statusid
100 2971 1
101 4637 1
102 4637 2
103 6144 2
104 6510 1
基本上我想要所有的id,projectid,其状态为1,如果1不可用,那么其状态id为2的id,如下面的结果。如果我们有两个状态,那么只有1个应该出现
id projectid statusid
100 2971 1
101 4637 1
103 6144 2
104 6510 1
我尝试使用union,但我使用了3个临时表来实现它,以寻找更好的选项。这里有一个技巧,使用
行数和带领带的Top 1
select top 1 with ties *
from yourtable
order by row_number()over(partition by projectid order by statusid asc)
使用行号
;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