34,575
社区成员
发帖
与我相关
我的任务
分享
--创建测试表
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB]') AND type in (N'U'))
DROP TABLE [dbo].[TB1]
GO
CREATE TABLE [dbo].[TB1](
[卡状态] [nvarchar] (20) NULL,
[卡类型] [nvarchar](50) NULL,
) ON [PRIMARY]
GO
--插入测试数据
INSERT INTO [TB1] ([卡状态],[卡类型])
SELECT N'发卡',N'正式卡' UNION ALL
SELECT N'发卡',N'正式卡' UNION ALL
SELECT N'发卡',N'临式卡' UNION ALL
SELECT N'制卡',N'临式卡' UNION ALL
SELECT N'制卡',N'正式卡'
GO
SELECT * FROM TB1
SELECT 卡状态 ,COUNT(卡类型) AS 总数, SUM (CASE 卡类型 WHEN '正式卡' THEN 1 ELSE 0 end) AS '正式卡' ,
SUM (CASE 卡类型 WHEN '临式卡' THEN 1 ELSE 0 end) AS '临式卡'
FROM TB1
GROUP BY 卡状态
要这样的吗SELECT 卡状态 + '数' ,
COUNT(1) AS 总数 ,
SUM(CASE WHEN 卡类型 = '正式卡' THEN 1
ELSE 0
END) AS 正式卡 ,
SUM(CASE WHEN 卡类型 = '临式卡' THEN 1
ELSE 0
END) AS 临式卡
FROM TB1
GROUP BY 卡状态