资源描述:
《sql如何将多行数据合并到一行》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、如题,需要将员工的一年的工资表显示出来,已通过表关系查询到员工每月的工资情况,现在需要对每个员工的工资进行合并到另外一张临时表中每员工一条记录记录了每月的工资,现在问题是如何将已得到的工资记录合并到另外一张表中去见图第二张表中的1--12是对应每月的工资现在我是通过存储过程来处理的但是却不知道如果合并望各位达人帮帮忙附上存储过程createprocGetuserPay@sjchar(4),@uservarchar(20)asdeclare@uidvarchar(30),@namevarchar(50)createtable#t
2、empuser(uidvarchar(30),namevarchar(50),sjdatetime,paydecimal(9,2))insertinto#tempuserselectdistinct(g.username),u.usernames,riqi,payfromGongZigjoinuser_useruonu.username=g.usernamewhereconvert(varchar,riqi,120)like(SelectConvert(Varchar(7),'2008',120))'%'select*from
3、#tempusercreatetable#monthlist(uidvarchar(30),m1decimal(9,2),m2decimal(9,2),m3decimal(9,2),m4decimal(9,2),m5decimal(9,2),m6decimal(9,2),m7decimal(9,2),m8decimal(9,2),m9decimal(9,2),m10decimal(9,2),m11decimal(9,2),m12decimal(9,2))godeclare@ttable(namevarchar(10),time
4、varchar(20),payint)insert@tselect'admin','2010-01',5unionallselect'admin','2010-02',90unionallselect'admin','2010-03',45unionallselect'admin','2010-04',45unionallselect'admin','2010-05',45unionallselect'admin','2010-06',34unionallselect'admin','2010-07',23unionallse
5、lect'wx','2010-04',90unionallselect'wx','2010-09',100unionallselect'wx','2010-12',500selectname,coalesce([2010-01],0)as[1],coalesce([2010-02],0)as[2],coalesce([2010-03],0)as[3],coalesce([2010-04],0)as[4],coalesce([2010-05],0)as[5],coalesce([2010-06],0)as[6],coalesce
6、([2010-07],0)as[7],coalesce([2010-08],0)as[8],coalesce([2010-09],0)as[9],coalesce([2010-10],0)as[10],coalesce([2010-11],0)as[11],coalesce([2010-12],0)as[12]from(select*from@t)assourcepivot(sum(pay)fortimein([2010-01],[2010-02],[2010-03],[2010-04],[2010-05],[2010-06]
7、,[2010-07],[2010-08],[2010-09],[2010-10],[2010-11],[2010-12]))aspvt