MS Access 2007: использование SQL для переноса строк в столбцы

Новичок в SQL. У меня таблица настроена следующим образом (извиняюсь за плохое форматирование):

ID цикла....UBCI....chemo_cycle....csf....rsn_no_csf
57.............18001...1..... .................Н.......Н
58............18001...2. .....................Н.......Н
59............22002. ..1 ......................Y........пусто

Я хотел бы преобразовать его в следующий формат:

UBCI....chemo_cycle1....chemo_cycle2....csf1....csf2....rsn_no_csf1....rsn_no_csf2
18001...1.......... ...............2.........................Н......... N........N......................N
22002...1......... ................пусто......................Y........пусто. ....ноль ноль

На один UBCI может приходиться до 26 chemo_cycles. Я попробовал некоторые другие предложения, но не был достаточно знаком с SQL, чтобы разобраться в некоторых тонкостях. Еще раз извиняюсь за формат. Любая помощь будет оценена по достоинству.

Благодарю вас!

-Омар


person Omar Rehman    schedule 20.11.2010    source источник
comment
Вам нужно дать более подробную информацию о том, откуда берутся # 2, как они получены из приведенной выше таблицы.   -  person Lance Roberts    schedule 20.11.2010
comment
Вы пробовали использовать мастер перекрестных запросов?   -  person Conrad Frix    schedule 20.11.2010
comment
важен ли порядок исходной таблицы?   -  person    schedule 20.11.2010


Ответы (1)


Единственный способ сделать это удобно в Access — это четыре запроса. Я не думаю, что вы можете использовать перекрестные запросы в качестве подзапросов, поэтому:

Запрос 1: копия

TRANSFORM First(TableQ.chemo_cycle) AS FirstOfchemo_cycle
SELECT TableQ.UBCI
FROM TableQ
GROUP BY TableQ.UBCI
PIVOT "CC " & [chemo_cycle];

Запрос 2: csf

TRANSFORM First(TableQ.csf) AS FirstOfcsf
SELECT TableQ.UBCI
FROM TableQ
GROUP BY TableQ.UBCI
PIVOT "csf " & [chemo_cycle];

Запрос 3: рсн

TRANSFORM First(TableQ.rsn_no_csf) AS FirstOfrsn_no_csf
SELECT TableQ.UBCI
FROM TableQ
GROUP BY TableQ.UBCI
PIVOT "rsn " & [chemo_cycle];

Окончательный запрос: столбцы с [cc 1] по [cc 26] будут отображаться в окне дизайна и могут быть добавлены, здесь они обозначены ‹...>

SELECT CC.UBCI, 
       CC.[CC 1], 
       CC.[CC 2], 
       <...>
       csf.[csf 1], 
       csf.[csf 2], 
       <...>
       rsn.[rsn 1], 
       rsn.[rsn 2]
       <...>
FROM (CC INNER JOIN csf 
ON CC.UBCI = csf.UBCI) 
INNER JOIN rsn 
ON csf.UBCI = rsn.UBCI;
person Fionnuala    schedule 20.11.2010