2017-07-14 53 views
0

我期望为部门的每个服务编号获取标志。对于我写了下面的旋转功能,但它不是按我的预期输出基于外观的枢轴数据

DECLARE @MyTab TABLE 
(
     Service_Number VARCHAR(20), 
     Department VARCHAR(20) 
) 

INSERT INTO @MyTab VALUES ('12A','ABC'), ('12A','XYZ'), ('12B','ABC'), ('12C','PQR') 

SELECT * FROM @MyTab 

SELECT 
             [ABC],[xyz],[pqr] 

       FROM @MyTab 
       PIVOT(    MAX(Service_Number)  
       FOR Service_Number IN ([ABC],[xyz],[pqr])) AS P 

输出

enter image description here

预期输出:

Service_Number ABC XYZ PQR 
12A   1 1 0 
12B   1 0 0 
12C   0 1 1 
+0

不是Service_Number但系(LIST_OF值),但仍然会返回1行,不需要输出 – vitalygolub

回答

0

你需要改变主要部分如下:

SELECT * from 
    (Select Service_Number, Department FROM @MyTab) a 
PIVOT(Count(Department) FOR Department IN ([ABC],[xyz],[pqr])) AS P 

Service_Number没有[ABC],[XYZ] ...

输出如下:

+----------------+-----+-----+-----+ 
| Service_Number | ABC | xyz | pqr | 
+----------------+-----+-----+-----+ 
| 12A   | 1 | 1 | 0 | 
| 12B   | 1 | 0 | 0 | 
| 12C   | 0 | 0 | 1 | 
+----------------+-----+-----+-----+