сводная таблица sql - PullRequest
       2

сводная таблица sql

2 голосов
/ 30 марта 2012

нужна помощь при ошибке в базе данных. У меня есть таблица, прирученная table_score, как показано ниже:

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

тогда это должно быть развернуто в

|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

Я путаюсь с этим, нужна помощь, пожалуйста. Спасибо.

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Как насчет -

SELECT
    ID,
    SUM(IF(Subject = '2GSLIG', Score, 0)) AS `2GSLIG`,
    SUM(IF(Subject = '3ECITI', Score, 0)) AS `3ECITI`
FROM table_score
GROUP BY ID
2 голосов
/ 30 марта 2012

Похоже, вы забыли '' вокруг 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...