【问题标题】:Pivot Table Count is Zero数据透视表计数为零
【发布时间】:2021-07-06 18:54:58
【问题描述】:

我有一张员工表,其中可能分配了 0 或 1 个许可证类型。当我执行数据透视时,所有许可证类型的返回计数均为 0。

按查询计数/分组

SELECT SHORTNM, Count(e.EmployeNumber)
FROM suprkron.EMPLOYEE_LICENSE_VW e
    INNER JOIN LICENSETYPE l ON l.LICENSETYPEID = e.LicenseID
    AND ACTIVESW = '1'
GROUP BY SHORTNM

按查询结果计数/分组

SHORTNM License Count
Workforce_Manager 245
Workforce_Timekeeper_Employee 2531
Workforce_Professional_Employee 2522

详细查询

SELECT SHORTNM, e.EmployeNumber
FROM suprkron.EMPLOYEE_LICENSE_VW e
INNER JOIN LICENSETYPE l ON l.LICENSETYPEID = e.LicenseID
AND ACTIVESW = '1'

详细查询结果

SHORTNM EmployeNumber
Workforce_Timekeeper_Employee 1
Workforce_Professional_Employee 1
Workforce_Timekeeper_Employee 2
Workforce_Professional_Employee 2
Workforce_Professional_Employee 3
Workforce_Manager 3
Workforce_Timekeeper_Employee 3

数据透视表查询

SELECT *
FROM
    (SELECT SHORTNM, e.EmployeNumber, e.EmployeeName
        FROM suprkron.EMPLOYEE_LICENSE_VW e
            INNER JOIN LICENSETYPE lON l.LICENSETYPEID = e.LicenseID
            AND ACTIVESW = '1') t
PIVOT (  Count  (SHORTNM)
FOR EmployeNumber in ([Workforce_Manager],[Workforce_Mobile_Employee], 
                      [Workforce_Timekeeper_Employee],[Workforce_Professional_Employee], 
                      [Workforce_Mobile_Manager])) as pVT

数据透视表查询结果

EmployeeName Workforce_Manager Workforce_Mobile_Employee Workforce_Timekeeper_Employee Workforce_Professional_Employee Workforce_Mobile_Manager
Emp1 0 0 0 0 0
Emp2 0 0 0 0 0
Emp3 0 0 0 0 0

【问题讨论】:

  • 但是,SHORTNM 包含例如[Workforce_Manager],但您的查询向 SQL Server 声称 EmployeNumber 包含它(您说 FOR EmployeNumber in ([Workforce_Manager] -> EmployeNumber 永远不是“Workforce_Manager”)

标签: sql sql-server tsql pivot-table


【解决方案1】:

为枢轴指定正确的列

SELECT *
FROM
    (SELECT SHORTNM, e.EmployeeName
        FROM suprkron.EMPLOYEE_LICENSE_VW e
            INNER JOIN LICENSETYPE lON l.LICENSETYPEID = e.LicenseID
            AND ACTIVESW = '1') t
PIVOT (  Count  (SHORTNM)
FOR SHORTNM in ([Workforce_Manager],[Workforce_Mobile_Employee], 
                      [Workforce_Timekeeper_Employee],[Workforce_Professional_Employee], 
                      [Workforce_Mobile_Manager])) as pVT

pivot for 子句应该读作FOR column_with_values IN ([this],[list],[of],[values],[formatted],[like],[columns]) - 来自SHORTNM 列的值成为查询输出中的列,因此您必须确保([this],[list],[of],[values],[formatted],[like],[columns]) 是实际遇到的值的列表在SHORTNM

【讨论】:

  • 随着 COUNT (EmployeNumber) 一起改变,我现在得到了计数值。
  • @Lionel - 如果这回答了您的问题,请记住将其标记为答案,以便发帖者获得荣誉。
  • (并且它在仪表板上显示为绿色,以便其他人认识您。找到您的答案,他们可以将时间用于仍在寻求帮助的人)
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多