推扬网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
推扬网 门户 你问我答 查看内容

李梦溪:SQL case when 语句

2020-8-12 15:59| 发布者: admin| 查看: 116| 评论: 0

摘要: 牛红光的回答: 求总发卡数和总制卡数和发卡正式卡数、发卡临时卡数、发卡正式卡数,制卡临时卡数、制卡正式卡数(如Excel中所示)求详细SQL语句。 --创建测试表 IF??EXISTS?(SELECT?*?FROM?sys.objects?WHERE?object_ ...

牛红光的回答:

求总发卡数和总制卡数和发卡正式卡数、发卡临时卡数、发卡正式卡数,制卡临时卡数、制卡正式卡数(如Excel中所示)求详细SQL语句。 --创建测试表 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??卡状态?+?'数'?AS?卡状态, ????????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?卡状态 ?GO --输出结果:

欧阳林的回答:

求总发卡数和总制卡数和发卡正式卡数、发卡临时卡数、发卡正式卡数,制卡临时卡数、制卡正式卡数(如Excel中所示)求详细SQL语句。 --创建测试表 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??卡状态?+?'数'?AS?卡状态, ????????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?卡状态 ?GO --输出结果:

茫茫大海的回答:

太长了,但是看到一个问题,case when,要求返回的类型必须一直。 你看你的第一个case when语句 (case when to_char(statistic_date-payrefdate>=0) and to_char(statistic_date-payrefdate<90) then sum(a.planfee-nvl(c.payreffee,0)) else &apos;&apos; end) then后边返回的是一个求和,那么类型肯定是数字,而else分支,其他情况下居然返回了空字符串,字符型。这两个不一致,首先就错了。你先改了这些吧。

查小欣的回答:

case when 就是case when 判断 case when 当满足条件 then 。。。 when ...... then ... 可以写很多种情况,直到结束


鲜花

握手

雷人

路过

鸡蛋

最新评论

热门推荐
最新资讯

广告服务|投稿要求|禁言标准|版权说明|免责声明|手机版|小黑屋|推扬网 ( 粤ICP备18134897号 )|网站地图 | 邮箱:vayae@hotmail.com

GMT+8, 2025-5-1 18:16 , Processed in 0.059592 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部