在PIVOT表中显示不同的列值

时间:2013-07-08 10:04:08

标签: sql sql-server sql-server-2008 pivot pivot-table

我有以下代码 -

DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct ',' +
                    QUOTENAME(Name)
                  FROM JobPhases
                  FOR XML PATH(''), TYPE
                 ).value('.', 'NVARCHAR(MAX)') 
                    , 1, 1, '');

SELECT @query = 'SELECT *
FROM    
(   
    SELECT c.Registration, p.Name, [x] = 1
    FROM    JobDetails  AS j
    INNER JOIN JobPhases p ON p.ID = j.PhaseId
    INNER JOIN Jobs job on job.ID = j.JobID
    INNER JOIN Cars c on job.CarID = c.ID
) JobDetails
PIVOT
(   SUM(x)
    FOR Name IN (' + @cols + ')
) pvt'

哪个会产生这个 -

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

但是,我希望它能显示j.EstimatedTime而不是j.ID。

表格结构 -

JobDetails

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

JobPhases

ID - PK String
Name - VarChar(150)

我是如何实现这一目标的?

由于

1 个答案:

答案 0 :(得分:1)

尝试将[x] = 1更改为[x] = j.EstimatedTime