10,607
社区成员
发帖
与我相关
我的任务
分享
;WITH cte AS (
Select ID,STATE,COUNT(STATE) AS num from #T GROUP BY ID,STATE
)
SELECT a.ID ,
a.num AS [STATE=1] ,
b.num AS [STATE=2]
FROM cte a
JOIN cte b ON b.ID = a.ID
AND a.STATE = 1
AND b.STATE = 2
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[STATE] int)
Insert #T
select 2,1 union all
select 2,2 union all
select 2,1 union all
select 3,2 union all
select 3,1 union all
select 3,1
Go
--测试数据结束
;WITH cte AS (
Select ID,STATE,COUNT(STATE) AS num from #T GROUP BY ID,STATE
)
SELECT ID ,
MAX(CASE WHEN STATE = 1 THEN num
ELSE 0
END) AS [STATE=1] ,
MAX(CASE WHEN STATE = 2 THEN num
ELSE 0
END) AS [STATE=1]
FROM cte
GROUP BY ID
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[STATE] int)
Insert #T
select 2,1 union all
select 2,2 union all
select 2,1 union all
select 3,2 union all
select 3,1 union all
select 3,1
Go
--测试数据结束
;WITH cte AS (
Select ID,STATE,COUNT(STATE) AS num from #T GROUP BY ID,STATE
)
SELECT a.ID ,
a.num AS [STATE=1] ,
b.num AS [STATE=2]
FROM cte a
JOIN cte b ON b.ID = a.ID
AND a.STATE = 1
AND b.STATE = 2