Sql表中数据如下:
姓名 卡号 上班一结果 下班一结果 上班二结果 下班二结果
王 001 病假 病假 正常 正常
赵 002 事假 事假 事假 迟到
李 003 有薪假 有薪假 有薪假 有薪假
钱 005 病假 病假 正常 正常
周 006 事假 正常 事假 迟到我现在想汇总以上数据,如病假的次数为:4次(王2次,钱2次)
事假的次数为:5次(赵3次,周2次)
有薪假的次数为:4次(李4次)
迟到的次数为:2次(赵1次,周1次)
应该怎样写SQL语句来实现呢
姓名 卡号 上班一结果 下班一结果 上班二结果 下班二结果
王 001 病假 病假 正常 正常
赵 002 事假 事假 事假 迟到
李 003 有薪假 有薪假 有薪假 有薪假
钱 005 病假 病假 正常 正常
周 006 事假 正常 事假 迟到我现在想汇总以上数据,如病假的次数为:4次(王2次,钱2次)
事假的次数为:5次(赵3次,周2次)
有薪假的次数为:4次(李4次)
迟到的次数为:2次(赵1次,周1次)
应该怎样写SQL语句来实现呢
select 病假=sum(上班一结果)+sum(下班一结果).....where 上班一结果='病假'....
select 病假=count(上班一结果)+count(下班一结果).....where 上班一结果='病假'....
我按你的方式写法如下:但是不行呀你说错在那里?select iprive=count(OneinEnd)+count(OneOutENd)+count(TwoinEnd)+count(TwoOutENd)+count(ThreeinEnd)+count(ThreeOutENd)+count(FourinEnd)+count(FourOutENd)
From tbDoCard
where OneinEnd='病假',OneOutEnd='病假',TwoinEnd='病假',TwoOutEnd='病假',ThreeinEnd='病假',ThreeOutEnd='病假',FourinEnd='病假',FourOutEnd='病假'
select iprive=count(OneinEnd)+count(OneOutENd)+count(TwoinEnd)+count(TwoOutENd)+count(ThreeinEnd)+count(ThreeOutENd)+count(FourinEnd)+count(FourOutENd)
From tbDoCard
where OneinEnd='病假' or OneOutEnd='病假'or TwoinEnd='病假'or TwoOutEnd='病假'or ThreeinEnd='病假'or ThreeOutEnd='病假'or FourinEnd='病假'or FourOutEnd='病假'
改成你这样写是可以运行的,但是查询出来的结果与最终结果不相符,总是比实际的次数要多一些,
不知是什么原因
select iprive=(select count(*) from tbDoCard where OneinEnd='病假')
+(select count(*) from tbDoCard where OneOutENd='病假')
+(select count(*) from tbDoCard where TwoinEnd='病假')
+(select count(*) from tbDoCard where TwoOutENd='病假')
+(select count(*) from tbDoCard where ThreeinEnd='病假')
+(select count(*) from tbDoCard where ThreeOutENd='病假')
+(select count(*) from tbDoCard where FourinEnd='病假')
+(select count(*) from tbDoCard where FourOutENd='病假')