2010-11-20 44 views
0

Débutant SQL ici. J'ai installé la table comme les suivantes (mes excuses pour les pauvres mise en forme):MS Access 2007: Utilisation de SQL pour transposer des lignes en colonnes

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

Je voudrais le convertir dans le format suivant:

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

Il peut y avoir jusqu'à 26 chemo_cycles par UBCI. J'ai essayé quelques-unes des autres suggestions, mais je ne connaissais pas assez SQL pour trouver certains des détails les plus fins. Encore une fois, excuses pour le formatage. Toute aide serait appréciée.

Merci!

-Omar

+0

Vous devez donner plus de détails sur l'origine des n ° 2, comment sont-ils dérivés du tableau ci-dessus? –

+1

Avez-vous essayé l'Assistant Requête de tabulation croisée –

+0

est l'ordre de la table d'origine significatif? –

Répondre

1

La seule façon que je peux voir le faire commodément dans Access est avec quatre requêtes. Je ne pense pas que vous pouvez utiliser des requêtes d'analyse croisée comme les sous-requêtes, donc:

Requête 1: cc

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

Requête 2: csf

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

Requête 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]; 

Requête finale: Les colonnes [cc 1] à [cc 26] s'afficheront dans la fenêtre de conception, et peuvent être ajoutées, ici Ils sont indiqués par < ...>

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;