TSQL:列和行值的表示形式

TSQL:列和行值的表示形式,tsql,sql-server-2012,Tsql,Sql Server 2012,我有一个场景,其中从表中提取的数据如下所示 EMP_Name Total_Work Work_Classification Work_Type SAM 10 Shift 1 SAM 20 Shift 2 SAM 40 Shift 3 SAM 80 Day

我有一个场景,其中从表中提取的数据如下所示

EMP_Name Total_Work Work_Classification Work_Type
SAM         10          Shift               1
SAM         20          Shift               2
SAM         40          Shift               3
SAM         80          Day                 NULL
TIM         12          Shift               1
TIM         18          Shift               2
TIM         22          Shift               3
TIM         41          Day                 NULL
John        21          Shift               1
John        17          Shift               2
John        31          Shift               3
John        76          Day                 NULL
数据需要表示如下:

EMP_Name Total_Work_Day Work_Type1 Work_Type2 Work_Type3
SAM         80          10          20          40
TIM         41          12          18          22
John        76          21          17          31

请帮助我获取使用TSQL表示数据的问题。您可以通过组合and语句来获得结果。我按工作类型1订购,但您可以根据需要更改或删除
订单

SELECT EMP_Name,
  SUM(CASE WHEN Work_Classification = 'Day' THEN Total_Work ELSE 0 END) AS 'Total_Work_Day',
  SUM(CASE WHEN Work_Type = 1 THEN Total_Work ELSE 0 END) AS 'Work_Type1',
  SUM(CASE WHEN Work_Type = 2 THEN Total_Work ELSE 0 END) AS 'Work_Type2',
  SUM(CASE WHEN Work_Type = 3 THEN Total_Work ELSE 0 END) AS 'Work_Type3'
FROM Table_1
GROUP BY EMP_Name
ORDER BY SUM(CASE WHEN Work_Type = 1 THEN Total_Work ELSE 0 END)
结果:

+-----------------------------------------------------------------+
|EMP_Name | Total_Work_Day | Work_Type1 | Work_Type2 | Work_Type3 |
+-----------------------------------------------------------------+
|  SAM    |      80        |    10      |    20      |    40      |
|  TIM    |      41        |    12      |    18      |    22      |
|  JOHN   |      76        |    21      |    17      |    31      |
+-----------------------------------------------------------------+

山姆的工作类型3,你的意思是40吗?是的@Xiaosu它的价值是40,谢谢你注意到这一点。我会改正错误的