将行转换为列

时间:2019-05-17 07:13:20

标签: sql-server

我有一个要求,我需要根据特定的组将行转换为列。这里的分组是基于COLA,COLD,COLE和COLF进行的。在该组中,我需要通过将字段从COLG附加到COLM并使用空格将所有行转换为列,并根据该组中的记录数将其插入新列ADRSET1,ADRSET2。

此外,当我将行转换为列时,我需要保留该行的COLC ='MP'(以黄色突出显示)的值,并将ADRSET1,ADRSET2和字段附加到该行的末尾。对于COLB,我们可以取平均值并将其放置在新记录中。

因此,如果您看到下面的前两行示例及其相应的输出,那么我将第1行保持原样(除了COLB,对​​于COLB,它是两个记录的平均值),并在末尾附加一个新的col (ADRSET1),将COLG2中的所有值从COLG附加到COLM。

我会尽力向我解释这种情况,如果不清楚,请告诉我,我可以进一步解释。我的输入和预期输出如下。我正在使用sql server 2014

这是我已经尝试过的。但不确定如何取平均COLB

select COLA,COLD,COLE,COLF,ADD1,ADD2,ADD3 ,ADD4 ,REG,POST,COUNTRY,ADDRSET1 from (select COLA,COLD,COLE,COLF,ADD1,ADD2,ADD3 ,ADD4 ,REG,POST,COUNTRY from TABLEA) AA where COLC='MP' left join (select COLA,COLD,COLE,COLF,ADD1||ADD2||ADD3||ADD4||REG||POST||COUNTRY ADDRSET1 TABLEA) BB on(AA.COLA=BB.COLA and AA.COLD=BB.COLD and AA.COLE=BB.COLE)

enter image description here

enter image description here

0 个答案:

没有答案