2010-11-20 4 views
0

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

Cycle ID .... UBCI .... chemo_cycle .... КСФ .... rsn_no_csf
57 .... ......... 18001 ... 1 ...................... N ....... N
58 ... .......... 18001 ... 2 ...................... N ....... N
59 .. ........... 22002 ... 1 ...................... Y ........ null

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

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

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

Спасибо!

-Omar

+0

Вам нужно указать более подробную информацию о том, откуда взялись # 2, как они получены из приведенной выше таблицы. –

+1

Вы попробовали мастер запросов на кросс-вкладку –

+0

- это порядок оригинальной таблицы? – 2010-11-20 20:28:03

ответ

1

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

Запрос 1: сс

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

Запрос 2: КСФ

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] будут отображаться в окне дизайна и могут быть добавлены здесь ey указаны < ...>

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; 
Смежные вопросы