首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

按条件统计行数的语句

2012-06-23 
求一个按条件统计行数的语句各位大大,小弟做了一个设备管理的表,但是想设计一个按条件统计未回复的记录的

求一个按条件统计行数的语句
各位大大,小弟做了一个设备管理的表,但是想设计一个按条件统计未回复的记录的设备状态的搜索语句。
表的结构如下图:

我现想得到的结果是所有回复状态等于false 的记录中,设备A,设备B,设备C这三列的内容不等于“正常”和“已修复”的记录分别有多少
比如:
设备A的运算结果应该为 正常或已修复的记录条数为1 非正常和未修复的记录条数为2,
设备A的运算结果应该为 正常或已修复的记录条数为2 非正常和未修复的记录条数为1,
设备A的运算结果应该为 正常或已修复的记录条数为2 非正常和未修复的记录条数为1,


[解决办法]

SQL code
declare @T table (设备A varchar(4),设备B varchar(6),设备C varchar(6),回复状态 varchar(5))insert into @Tselect null,'正常','坏','True' union allselect '正常','已修复','正常','False' union allselect '坏',null,'已修复','False' union allselect '坏','正常','坏','False'select sum(case when 设备A='已修复' or 设备A='正常' then 1 else 0 end) as 设备A正常或已修复的记录,sum(case when 设备A='坏' or 设备A is null then 1 else 0 end) as设备A非正常和未修复的记录,sum(case when 设备B='已修复' or 设备B='正常' then 1 else 0 end) as 设备B正常或已修复的记录,sum(case when 设备B='坏' or 设备B is null then 1 else 0 end) as设备B非正常和未修复的记录,sum(case when 设备C='已修复' or 设备C='正常' then 1 else 0 end) as 设备C正常或已修复的记录,sum(case when 设备C='坏' or 设备C is null then 1 else 0 end) as设备C非正常和未修复的记录from @T where 回复状态='False' 

热点排行
Bad Request.