2013-10-15 35 views
0

我有一個查詢,列出了這些年來員工的評分,但這些年份都列在一列中。我試圖讓會議年份有自己的分數列,如果他們沒有得分爲零。特定條件時的情況

到目前爲止的代碼:

SELECT Employee_ID, Meeting_Year, Manager_Readiness_Rating 
FROM dbo.v_sc17_TMS_Data_Career_Meeting_Rating 
GROUP BY Employee_ID, Meeting_Year, Manager_Readiness_Rating 

所以如果meeting_year是2012我想爲員工列中列出的所有2012 Manager_Readiness_Rating。下面是一些例子

ID Year  Rating 
1  2011 11 
2  2012 10 
3  2010 09 
4  2010 03 
4  2011 03 

我想它看起來像

ID 2010 2011 2012 
1 NULL 11 NULL 
2 NULL NULL 1 
3 09 NULL NULL 
4 03 03 NULL 
+0

您可以根據該數據發佈一些示例數據和您的預期輸出嗎? –

+1

我做了更改 – user2119980

+0

您正在嘗試轉發數據。這只是一個數據展示問題,您應該在前端解決。話雖如此,如果您想以這種方式來轉發數據,您需要爲每個月手動添加每列。你不能動態地生成任何數量的列,你必須提前知道它們 –

回答

2
SELECT Employee_ID, Meeting_Year, GROUP_CONCAT(Manager_Readiness_Rating) 
FROM dbo.v_sc17_TMS_Data_Career_Meeting_Rating 
GROUP BY Employee_ID, Meeting_Year 
+0

這在SQL中不起作用,而且它不是我正在尋找的。我發佈了我需要的樣子。謝謝你 – user2119980

0

這被標記爲MySQL的,但dbo讓我覺得這是SQL Server中。此查詢應該適用於以下任一項:

SELECT 
    Employee_ID AS ID, 
    MAX(CASE WHEN Year = 2010 THEN Rating END) AS R2010, 
    MAX(CASE WHEN Year = 2011 THEN Rating END) AS R2011, 
    MAX(CASE WHEN Year = 2012 THEN Rating END) AS R2012 
FROM dbo.v_sc17_TMS_Data_Career_Meeting_Rating 
GROUP BY Employee_ID 
ORDER BY 1