繁体   English   中英

MS Access 2007:使用SQL将行转置为列

[英]MS Access 2007: Using SQL to Transpose rows to columns

SQL新手在这里。 我有以下表格设置(我为格式不正确而道歉):

周期ID .... UBCI .... chemo_cycle .... csf .... rsn_no_csf
57 ............. 18001 ... 1 ...................... N ....... N
58 ............. 18001 ... 2 ...................... N ....... N
59 ............. 22002 ... 1 ...................... Y ........空值

我想将其转换为以下格式:

UBCI .... chemo_cycle1 .... chemo_cycle2 .... csf1 .... csf2 .... rsn_no_csf1 .... rsn_no_csf2
18001 ... 1 ......................... 2 ................... ...... N ........ N ........ N ..................... N
22002 ... 1 ..................................空... ... Y ........ null ..... null ......... null

每个UBCI最多可以有26个chemo_cycles。 我尝试了其他一些建议,但对SQL不够熟悉,无法找出一些更详细的细节。 同样,对格式表示歉意。 任何帮助,将不胜感激。

谢谢!

-奥马尔

我可以看到在Access中方便地执行此操作的唯一方法是使用四个查询。 我认为您不能将交叉表查询用作子查询,因此:

查询1:抄送

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM