关于CASE WHEN的多条件汇总问题

Posted yadongliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于CASE WHEN的多条件汇总问题相关的知识,希望对你有一定的参考价值。

https://bbs.csdn.net/topics/392217817?page=1

问题:

--创建测试表
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N[dbo].[TB]) AND type in (NU))
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(1) AS 总数 ,
        SUM(CASE WHEN 卡类型 = 正式卡 THEN 1
                 ELSE 0
            END) AS 正式卡 ,
        SUM(CASE WHEN 卡类型 = 临式卡 THEN 1
                 ELSE 0
            END) AS 临式卡
FROM    TB1
GROUP BY 卡状态

 

技术分享图片

 

以上是关于关于CASE WHEN的多条件汇总问题的主要内容,如果未能解决你的问题,请参考以下文章

case when 使用

跨表使用group by,case when的问题

有条件地使用 CASE...WHEN - Oracle SQL

关于sql中动态 ORDER BY+CASE WHEN中排序字段类型的问题

CASE 表达式 - 在 WHEN 部分再添加一个条件

选择“case when”...产生分组结果...如何获取汇总数据?