594
社区成员
发帖
与我相关
我的任务
分享
with cte(c1,c2,c3,result) as(
select 1, 1,1,'OK' union all
select 1, 1,1,'OK' union all
select 1, 1,1,'OK' union all
select 2, 2,2,'OK' union all
select 2, 2,2,'OK' union all
select 2, 2,2,'NG'
)
select c1,c2,c3,sum(case when result='OK' then 1 else 0 end) 'OK结果',sum(case when result='NG' then 1 else 0 end) 'NG结果' from cte group by c1,c2,c3
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([列A] int,[列B] int,[列C] int,[结果] nvarchar(22))
Insert #T
select 1,1,1,N'OK' union all
select 1,1,1,N'OK' union all
select 1,1,1,N'OK' union all
select 2,2,2,N'OK' union all
select 2,2,2,N'OK' union all
select 2,2,2,N'NG'
Go
--测试数据结束
SELECT [列A] ,
[列B] ,
[列C] ,
SUM(CASE WHEN 结果 = 'OK' THEN 1
ELSE 0
END) AS OK结果 ,
SUM(CASE WHEN 结果 = 'NG' THEN 1
ELSE 0
END) AS NG结果
FROM #T
GROUP BY [列A] ,
[列B] ,
[列C]
IF OBJECT_ID('#testtable', 'U') IS NOT NULL
DROP TABLE #testtable;
CREATE TABLE #testtable
(
COL1 INT NOT NULL,
COL2 INT NOT NULL,
COL3 INT not null,
COL4 CHAR(10) not null
);
INSERT INTO #testtable VALUES
(1, 1,1,'OK'),
(1, 1,1,'OK'),
(1, 1,1,'OK'),
(2, 2,2,'OK'),
(2, 2,2,'OK'),
(2, 2,2,'NG');
SELECT COL1,COL2,COL3,COUNT(T4)AS OK,COUNT(T5) AS NG
FROM
(
SELECT COL1,COL2,COL3,
T4=
CASE WHEN COL4='OK' THEN 'OK'
ELSE
NULL
END,
T5=
CASE WHEN COL4='NG' THEN 'NG'
ELSE
NULL
END
FROM #testtable
) AS T
GROUP BY COL1,COL2,COL3
新手代码,多多指教。