2010-11-20 4 views
0

SQL-Neuling hier. Ich habe Tabelle Setup wie die folgenden (meine Entschuldigung für die schlechte Formatierung):MS Access 2007: Verwenden von SQL zum Transponieren von Zeilen zu Spalten

Zyklus ID .... UBCI .... chemo_cycle .... csf .... rsn_no_csf
57 .... ......... 18001 ... 1 ...................... N ....... N
58 ... .......... 18001 ... 2 ...................... N ....... N
59 .. ........... 22002 ... 1 ...................... Y ......... null

ich mag es in folgendem Format konvertieren:

UBCI .... chemo_cycle1 .... chemo_cycle2 .... CSF1 .... CSF2 .... rsn_no_csf1 .... rsn_no_csf2
18001 ... 1 ......................... 2 ..... .................... N ........ N ........ N ........... .......... N
22002 ... 1 ......................... null ....... ............... Y ......... null ... null .................. null

Es können bis zu 26 Chemozyklen pro UBCI auftreten. Ich habe einige der anderen Vorschläge ausprobiert, war aber mit SQL nicht vertraut genug, um einige der feineren Details auszuarbeiten. Nochmals, Entschuldigung für die Formatierung. Jede Hilfe wäre willkommen.

Vielen Dank!

-Omar

+0

Sie müssen angeben, woher die # 2 kommen, wie sie von der obigen Tabelle abgeleitet sind. –

+1

Haben Sie versucht, die Kreuztabellen Abfrage-Assistent –

+0

Reihenfolge der Originaltabelle signifikant ist? –

Antwort

1

Die einzige Art, wie ich dies bequem in Access sehen zu tun ist mit vier Abfragen. Ich glaube nicht, Sie Kreuztabellen- Abfragen als Unterabfragen verwenden können, so:

Abfrage 1: cc

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

Abfrage 2: csf

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

Abfrage 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]; 

Letzte Abfrage: Die Spalten [cc 1] bis [cc 26] werden im Design-Fenster angezeigt und können hinzugefügt werden, hier th ey werden angezeigt durch ...>

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;