Справка по SQL-запросу MS access 2010 - PullRequest
2 голосов
/ 04 июля 2011

Как мне превратить таблицу из этой формы:

S_ID          SUBJECT          MARK
1             English          90
1             Math             40
1             Computer         30
2             English          85
2             Math             10
2             Computer         06
3             English          10
3             Math             20
3             Computer         40

В эту форму

S_ID       English        Math         Computer
1          90             40           30
2          85             10           06
3          10             20           40

с использованием кода SQL,

Я использую MS Access2010,

Спасибо

Ответы [ 3 ]

4 голосов
/ 04 июля 2011

Требуется перекрестный запрос, который приведет к столбцу по теме;

TRANSFORM Sum(MARK) AS TotalMark
SELECT 
   S_ID
FROM marks
   GROUP BY S_ID
PIVOT SUBJECT;
4 голосов
/ 04 июля 2011
SELECT S_ID ,
       MAX(CASE WHEN subject = 'English' THEN mark ELSE null END) AS English,
       MAX(CASE WHEN subject = 'Math' THEN mark ELSE null END) AS Math,
       MAX(CASE WHEN subject = 'Computer' THEN mark ELSE null END) AS Computer
FROM myTable
GROUP BY S_ID 
0 голосов
/ 04 июля 2011

если это одноразовое упражнение, вы можете использовать много операторов последовательно: что-то вроде этого:

insert into new_table
select distinct s_id, 0,0,0
from old_table

затем серия обновлений

update new_table n
set english = (select english from old_table where s_id = n.s_id )
where s_id = n.s_id
...