MS Access 2007: использование SQL для транспонирования строк в столбцы - PullRequest
0 голосов
/ 20 ноября 2010

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

Идентификатор цикла .... UBCI .... chemo_cycle .... csf .... rsn_no_csf57 ............. 18001 ... 1 ...................... N ....... N58 ............. 18001 ... 2 ...................... N ....... N59 ............. 22002 ... 1 ...................... Y ........null

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

UBCI .... chemo_cycle1 .... chemo_cycle2 .... csf1 .... csf2 ....rsn_no_csf1 .... rsn_no_csf218001 ... 1 ......................... 2 ......................... ........ Н Н Н ........ ..................... Н22002 ... 1 ......................... нуль ...................... Y ........ null ..... null .................. null

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

Спасибо!

-Омар

1 Ответ

1 голос
/ 21 ноября 2010

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

Запрос 1: CC

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: RSN

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