【发布时间】: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