sql的行转列(case when) sqlserver.net

摘要:
行转列之前SQLSELECTzhenshi,status,COUNTASnFROM[MyPlan]WHERE1=1ANDleibie=1AND[SickID]=0ANDzhenshi'协同诊疗'ANDt˃='2020-06-0600:00:00'ANDt˂'2020-06-0800:00:00'GROUPBYzhenshi,status行转列之前的运行结果------------------------------------------------------------------------------------------------------行转列之后SQLselect0,zhenshi,sum(case--statuswhenstatus!='完成'thennelse0end)'预约病人数量',sum'已来诊',sum(case--statuswhenstatus!='完成'thennelse0end)'未来诊'fromtwheret.zhenshi!=''groupbyzhenshi行转列之后的运行结果这时候再去程序里遍历,就简单显示了。

行转列之前SQL

SELECT zhenshi, status, COUNT(1) AS n
FROM [MyPlan]
WHERE 1 = 1
	AND leibie = 1
	AND [SickID] = 0
	AND zhenshi <> '协同诊疗'
	AND t >= '2020-06-06 00:00:00'
	AND t < '2020-06-08 00:00:00'
GROUP BY zhenshi, status

行转列之前的运行结果

sql的行转列(case when) sqlserver.net第1张

------------------------------------------------------------------------------------------------------

行转列之后SQL

select 0
		,zhenshi
		,sum(case --status
			when status!='完成' then n
			else 0
		end) '预约病人数量'
		,sum(case status
			when '已来诊' then n
			else 0
		end) '已来诊'
		,sum(case --status
			when status!='已来诊' and status!='完成' then n
			else 0
		end) '未来诊'
		from
		(
			select zhenshi,status,count(1) n
			--CASE status WHEN '开启' THEN status ELSE '开启' END,
			--CASE status WHEN '已来诊' THEN status ELSE '已来诊' END,
			--CASE status WHEN '未来诊' THEN status ELSE '未来诊' END
			
			FROM [MyPlan] where 1=1 and leibie=1 and [SickID] =0 and zhenshi<>'协同诊疗' --and status='已来诊' 
			--and zhenshi='好孕一组'
			and t>='2020-06-06 00:00:00' and t<'2020-06-08 00:00:00'
			group by zhenshi,status
		)t
		where t.zhenshi!=''
		group by zhenshi

行转列之后的运行结果

sql的行转列(case when) sqlserver.net第2张

这时候再去程序里遍历,就简单显示了。

这里只做行转列。

列转行暂未写-2020.06.07

免责声明:文章转载自《sql的行转列(case when) sqlserver.net》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何将微信小程序页面内容充满整个屏幕IHttpHandler接口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sql server字符串中怎么添加换行?

换行/回车,可以使用CHAR函数处理,比如: 1 insert into tbtest (text) values ('abc' + char(13)+char(10) + 'def') 主要还是要看你MFC它支持的换行是哪种形式: char(13)+char(10)形式还是使用转义的 形式,如果是转义形式的话,可以直接使用 1 insert ...

c#中高效的excel导入sqlserver的方法

将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒...

全网数据库大全

参考资源 数据库种类发展史和大数据下的数据库 NoSQL百度百科 NewSQL百度百科 分布式NewSQL对比——heaventouch大佬的博客 Google Spanner论文翻译——林子雨 人道浮沉的博客 列式数据库与行式数据库 Oracle数据库、MySQL数据库、SQL Server数据库 Oracle、Mysql、SQL Server比较 Mo...

SQLSERVER 维护计划无法删除

数据对网站运营或者企业运营是至关重要的,所以,我们在使用数据库的时候,为了保证数据的安全可靠性,都会做数据库备份, 很显然,这个备份,我们不可能每天都去手动备份,SQLServer 数据库就可以提供数据库定时备份的任务,你可以设置按照天、周、 月、年等不同设置不同的备份周期,这里我就不在介绍自动备份的设置了,百度教程可以找到一大波,最重要的一点就是,一定要...

oracle minus 与sqlserver except

摘自:http://www.cnblogs.com/jhxk/articles/1614655.html Oracle中 MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果...

SQL Server -&amp;gt;&amp;gt; AlwaysOn高可用副本同步失败

前段时间我们生产环境有台alwayson高可用副本挂了,一开始是发现数据库账号不能登录,以为是密码过期,登录到副本上面发现数据库同步中断。 这个时候肯定第一时间是先查下SQL SERVER日志看下是什么报错原因引起的。 然后在SQL SERVER日志里面找到凌晨2点15分30秒的时候目标数据库有一条错误日志,提示Always On Availabili...