2010-11-20 48 views
0

SQL新手在這裏。我有表設置爲以下(我的道歉爲窮人格式):MS Access 2007:使用SQL將行轉換爲列

週期ID .... UBCI .... chemo_cycle .... CSF .... rsn_no_csf
57 .... ......... 18001 ... 1 ...................... N ....... N
58 ... .......... 18001 ... 2 ...................... N ....... N
59 .. ........... 22002 ... 1 ...................... Y ........ null

我想將其轉換成以下格式:

UBCI .... chemo_cycle1 .... chemo_cycle2 .... CSF1 .... CSF 2 .... rsn_no_csf1 .... rsn_no_csf2
18001 ... 1 ......................... 2 ..... ....................Ñ........Ñ........Ñ........... .......... N
22002 ... 1 ......................... null ....... ...............Ÿ........ .....空空..................空

每個UBCI最多可以有26個chemo_cycles。我嘗試了其他一些建議,但對SQL不熟悉以找出一些更好的細節。再次,格式化的道歉。任何幫助,將不勝感激。

謝謝!

-Omar

+0

您需要提供#2s來自哪裏的更多細節,它們是如何從上表中派生出來的。 – 2010-11-20 19:35:37

+1

您是否嘗試過交叉標籤查詢嚮導 – 2010-11-20 19:39:21

+0

原始表的順序是否顯着? – 2010-11-20 20:28:03

回答

1

我能看到在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]將顯示在設計窗口中,並且可以添加,在這裏th 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;