2012-03-30 156 views
2

需要數據庫透視中的錯誤幫助。我已經表馴服table_score象下面這樣:數據透視表sql

|ID | Subject | Score| 
---------------------- 
|001 | 2GSLIG | 80 | 
|001 | 3ECITI | 70 | 
|002 | 2GSLIG | 75 | 
|002 | 3ECITI | 85 | 
----------------------- 

那麼就應該pivotted到

|ID | 2GSLIG | 3ECITI | 
----------------------- 
|001| 80 | 70 | 
|002| 85 | 75 | 
----------------------- 

我的代碼是

SELECT 
    ID, 
    [2GSLIG] AS 2GSLIG, 
    [3ECITI] AS 3ECITI 
FROM 
    (SELECT 
    ID, 
    Subject, 
    Score 
    FROM 
    table_score) ps 
PIVOT 
(SUM (Score) 
    FOR Subject IN ([2GSLIG], [3ECITI])) AS pvt 

,它仍然錯誤

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near '[ 2GSLIG ] AS 2GSLIG , [ 3ECITI ] AS 3ECITI FROM (SELECT ID , 
Subject , Score F' at line 1 

我我對此感到困惑,需要 請幫助。謝謝。

+1

你有沒有混合MySQL和MS SQL服務器? – Devart 2012-03-30 12:15:51

+0

我在這裏使用內置的MySQL – charcoalite 2012-03-30 13:00:12

回答

3

怎麼樣 -

SELECT 
    ID, 
    SUM(IF(Subject = '2GSLIG', Score, 0)) AS `2GSLIG`, 
    SUM(IF(Subject = '3ECITI', Score, 0)) AS `3ECITI` 
FROM table_score 
GROUP BY ID 
+0

它沒有遇到錯誤,但返回的值不是實際值,所有值都保持爲1,如下圖所示。有人可以告訴我嗎? '| ID | 2GSLIG | 3ECITI |' '-----------------------' '| 001 | 1 | 1 |' '| 002 | 1 | 1 |' '-----------------------' – charcoalite 2012-03-30 12:55:04

+0

我很懶,沒有正確地讀你的問題。現在就試試。 – nnichols 2012-03-30 13:06:48

+0

非常感謝你的工作。 – charcoalite 2012-03-30 13:10:53

2

您似乎忘記了 '' 各地2GSLIG和2ECITI在你的別名

SELECT ID, [2GSLIG] AS '2GSLIG', [3ECITI] AS '3ECITI' 
FROM (SELECT ID, Subject, Score FROM table_score) AS ps PIVOT (SUM (Score) FOR Subject IN ([2GSLIG], [3ECITI])) AS pvt 
+0

是的,我做到了,但仍然遇到錯誤 – charcoalite 2012-03-30 12:59:41