2012-03-30 4 views
0

нужно выбрать несколько таблицы и один из его транспонирования моей таблица приведена ниже:
table_scoreошибка при транспонировании и присоединиться к таблице

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

table_student

|ID | StudentName | 
-------------------- 
|001 | Diana  | 
|002 | Yose  | 
-------------------- 

, то я хочу сделайте это в

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

это мой код, но я встречаюсь Ошибка тер

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

Интересно, если бы кто-то поможет мне, спасибо

+1

Какой вкус SQL, TSQL, PSQL, MySQL, Microsoft , Oracle и т. Д.? – RThomas

ответ

1
SELECT tsc.ID, 
     tst.StudentName, 
     SUM(CASE WHEN tsc.Subject='2GSLIG' THEN tsc.Score END) AS '2GSLIG', 
     SUM(CASE WHEN tsc.Subject='3ECITI' THEN tsc.Score END) AS '3ECITI' 
FROM table_score tsc 
INNER JOIN 
table_student tst 
ON tsc.ID = tst.ID 
GROUP BY tsc.ID,tst.StudentName; 

Проверить это на SQLFIDDLE - http://sqlfiddle.com/#!3/68e96/1

+0

Надеюсь, это сработает для вас ... – Teja

+0

Вы не можете начинать имена столбцов с номера. Вам нужно будет заключить с ''. – RThomas

+0

Включил их в одинарные кавычки ... – Teja

1
select st.ID, 
    st.StudentName, 
    SUM(case when sc.Subject = '2GSLIG' then sc.Score end) as `2GSLIG`, 
    SUM(case when sc.Subject = '3ECITI' then sc.Score end) as `3ECITI` 
from table_score sc 
join table_student st on sc.ID = st.ID 
group by st.ID, 
    st.StudentName 
Смежные вопросы