0

SQL 2008 クエリから次の出力を生成しようとしています -

JobID | Repair & Reshape | Refit Stripped Parts | Polishing 
1000  | true             | true                 | false
1001  | true             | true                 | false
1002  | true             | true                 | false
1003  | true             | true                 | false
1004  | true             | true                 | false

私が持っているテーブル構造は -

仕事の詳細

ID - PK Auto increment
JobID - Int (Joined to Jobs table)
PhaseID - String (joined to JobPhases table)

ジョブフェーズ

ID - PK String
Name - VarChar(150)

これまでのところ、私は -

SELECT JobID, [0], [1], [2], [3], [4], [5], [6], [7]
 FROM    
(   
    SELECT  JobID, PhaseID, [x] = 1 FROM    JobDetails  
) JobDetails
PIVOT
(   SUM(x)
    FOR PhaseID IN ([0], [1], [2], [3], [4], [5], [6], [7])
) pvt

しかし、0-7 などをどのようにジョブ フェーズ名に置き換えるのかわかりませんか?

乾杯

4

2 に答える 2

1

JOINそのテーブルとJobPhasesアンカー クエリのテーブルを組み合わせて、フェーズ名のリストを使用し、フェーズFOR Name INの名前をリストします。

SELECT *
 FROM    
(   
    SELECT  j.JobID, j.PhaseID, p.Name, x
    FROM    JobDetails  AS j
    INNER JOIN JobPhases AS p ON p.ID = j.haseId
) JobDetails
PIVOT
(   SUM(x)
    FOR Name IN ([phasename1], [phasename2], ...)
) pvt
于 2013-07-08T09:28:50.533 に答える