你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)

上一篇 你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(上) 已经讲到了列转行的数据。

对于留下的作业不知道有没有思路?

这里接下来讲怎么做:

从表#tempSaleDtl2行转列,按类型聚合 求出每个产品每个类型(面积、金额……)的合计 放入表#tempSaleDtl3

 来看看这里的数据与前一步的对应关系:

查看大图

结果部分数据如图:

查看大图

其中列名为了显示方便,这里用了2011,可以将列名变了year-01……。

关于行转列的知识前系列也提过,不理解的请自觉前去复习。

小技巧是用到了MAX聚合,关于这点前面聚合的文章中有提到。整个的数据结构现在越来越趋近于最后的结果了,year~继续。

来看看结果中还差什么?项目!

这里用 “–”来代替数据:

还有产品

 

部分数据如图:

查看大图

最后从表#tempSaleDtl3 联接产品表#product 与项目表查询出最后的显示:

 

以上三块数据加在一起,用union ALL,然后排个序就得到最开始效果图中的结果,再次来看看:

查看大图

其中注意orderCode,这里用到层级,前台显示时可以更方便显示层级关系。

最后完整的code:

最重要的重要的!!最后不要忘了删除临时表:

至此 数据报表系列已结束,以上也只是提供一下思路,再次提醒一下各位在作以上每一步数据处理时请用数据集合的思维来思考,可能对于一般人来说长篇幅的存储过程编写没有写过,文中涉及到的技巧和思路是值得借鉴的,其中不理解的可以回过头来将之前系列的各部分基础知识点复习一下,然后一步步将结果打印出来测试,在脑袋里留下个前一步的数据,然后再思考下一步的数据怎么处理。如果你能毫无鸭梨的完全写出来,那恭喜你,你已经进阶为小大师,将会迎娶白富美,走上人生巅峰……想想是不是有点小激动……

最终的SQL,其中两个参数 需要查询的项目ID @ProjectGUID和需要查询的年份 @Year 可以由外部传入,可以自己写个存储过程,在这里就不演示了:

1 2 收藏 2 评论

关于作者:欢醉

因为专注,所以专业NET,UDP\\TCP开发,架构设计,数据库,Jquery插件开发,微信开发,android应用,O2O商业模式开发微信公众号【一个码农的日常】 个人主页 · 我的文章 · 4 ·    

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部