加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

这将得到相同的结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读