sql-server-2005 – Sql Server数据透视表不分组结果集
发布时间:2020-12-12 06:28:59 所属栏目:MsSql教程 来源:网络整理
导读:我的表格值如下 – EMP_CODE | LEAVENAME | APP_TYPE | LEAVE_DATE | ACT_DAYS--------------------------------------------------------ST006 | CL | P | 2012-01-03 | 1.0ST006 | CL | P | 2012-01-18 | 1.0ST006 | SL | P | 2012-01-27 | 1.0ST002 | CL |
我的表格值如下 –
EMP_CODE | LEAVENAME | APP_TYPE | LEAVE_DATE | ACT_DAYS -------------------------------------------------------- ST006 | CL | P | 2012-01-03 | 1.0 ST006 | CL | P | 2012-01-18 | 1.0 ST006 | SL | P | 2012-01-27 | 1.0 ST002 | CL | P | 2012-01-04 | 1.0 ST002 | CL | P | 2012-01-12 | 1.0 ST002 | SL | P | 2012-01-27 | 1.0 OCO038 | CL | P | 2012-01-27 | 1.0 HO188 | CL | P | 2012-01-09 | 1.0 HO188 | CL | P | 2012-01-30 | 1.0 HO085 | CL | P | 2012-01-19 | 1.0 HO085 | SL | P | 2012-01-23 | 1.0 我已经写了这个查询来将所有的假期类型加起来作为每个雇员的列.每个员工必须只有一行. SELECT EMP_CODE,[CL],[LWP],[PL],[SL] FROM LEAVE_DETAIL L PIVOT (SUM(ACT_DAYS) FOR LEAVENAME IN ([CL],[SL])) AS PVT ORDER BY EMP_CODE; 但是这个查询没有给我预期的输出.每个员工都有不止一行,这不是我想要的. 下表显示了预期的产量 – EMP_CODE | CL | SL | ---------|------|-----| ST006 | 2.0 | 1.0 | ST002 | 2.0 | 1.0 | OCO038 | 1.0 | 0.0 | HO188 | 2.0 | 0.0 | HO085 | 1.0 | 1.0 | 请帮忙. 解决方法您甚至不需要在查询中使用group by.因为枢轴的作用是它在其他列上“分组”.这个解决方案的关键是内部选择.我认为首先与小组进行总结,然后再次应用一笔金额和一组,这不是一个神圣的习惯.SELECT EMP_CODE,[SL] FROM ( SELECT EMP_CODE,LEAVENAME,ACT_DAYS FROM @tmp_emp ) L PIVOT ( SUM(ACT_DAYS) FOR LEAVENAME IN ([CL],[SL]) ) AS PVT ORDER BY EMP_CODE 这将得到相同的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |