日期:2014-05-17  浏览次数:20372 次

sql 复杂查询
表A
numdw    numbm   date lx    mark
1  2  2013/1     1 5
1  2  2013/2     1 5
1  3  2013/1     1 7
1  3  2013/2     1 7
3  2  2013/1     1 5
3  3  2013/2     1 7
5  2  2013/1     1 5
5  3  2013/2     1 7
7  2  2013/1     1 5
7  3  2013/2     1 7
9  2  2013/1     1 5
9  3  2013/2     1 7

表B
numbm bmjc
2 人事部门
3 后勤部门
4 技术部门

要实现的查询结果:
numdw year month every/total 人事部门 后勤部门 count countf   
1  2013   2     1    1   1  2  1
1  2013   2     2    2   2  4  2
3  2013   2     1    1   1  2  1
3  2013   2     2    1   1  2  1

注:
every/total 1表示当月,2表示截止到当前月(一年度)
人事部门、后勤部门这些列为动态,根据查询条件确定,值为表A,mark=5的合计
count 为人事部门、后勤部门等列值的sum
countf 与count类似,但是mark=7

------解决方案--------------------
我不知sql 2005有没有提供 pivot, 我的2008是有。

给你个提示,google一下 pivot 和 stuff 的用法,可以解决你的问题
------解决方案--------------------
看看这个精华帖吧 ,动态行转列
http://bbs.csdn.net/topics/240002706