一个用数据库执行交叉报表样式的例子

原数据表样式:

        proid            社员番号              社员区分             年月               上班天数

       1001             100                         小明                     一月                 19

       1002             101                         小红                     一月                 20

       1001             100                         小明                     二月                 22

       1002             101                         小红                     二月                 23

       1001             100                         小明                     三月                 24

       1002             101                         小红                     三月                 24

 

 

 

执行代码:

 

SELECT a.proid ,a.社员番号, a.社员区分,b.一月,c.二月,ISNULL( d.三月,0) as 三月 ,(b.一月+c.二月+ISNULL( d.三月,0)) as 总计
FROM (
     SELECT DISTINCT proid ,社员番号 , 社员区分 FROM test
     )a LEFT JOIN
     (
      SELECT proid,社员番号,社员区分,作业时间 as 一月 FROM test WHERE 年月='1月'
     )b ON a.社员番号=b.社员番号 AND a.社员区分 = b.社员区分
     LEFT JOIN
     (
      SELECT proid,社员番号,社员区分,作业时间 as 二月 FROM test WHERE 年月='2月'
     )c ON a.社员番号=c.社员番号 AND a.社员区分=c.社员区分
     LEFT JOIN
     (
      SELECT proid,社员番号,社员区分,作业时间 as 三月 FROM test WHERE 年月='3月'
     )d ON a.社员番号=d.社员番号 AND a.社员区分=d.社员区分
 

 

执行后数据表:

 

proid            社员番号              社员区分       一月      二月       三月

1001            100                        小明               19          22           24

1002            101                         小红              20          23           24

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值