如何从sql中的另一个表中选择列名所在的值?

ukqbszuj  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(293)

我有两个表,表b有表a的一些列名,这些列名被分成不同的组,现在我想从a中选择属于b中某个组的数据,如何编写这样的查询?
说明
表a是这样的

|key|c1|c2|c3|c4|
|p1 |11|21|23|23|
|p2 |10|22|33|21|
|p3 |20|32|53|90|
|p4 |20|42|43|98|

表b是这样的

|cloumnName|Group|
|c1|g1|
|c2|g1|
|c3|g2|
|c4|g2|

我知道从b is中选择c1 c2

select columnName from B where Group='g1'

但是,如何从表a中选择数据,其中key='p1',并包含上面结果中的列(c1,c2)?像(p1,11,21)

wgmfuz8q

wgmfuz8q1#

你可以做旋转和连接

select b.*,a.* from

(select max(case when cloumnName='c1' then [group] end) as c1,
       max(case when cloumnName='c2' then [group] end) as c2,
       max(case when cloumnName='c3' then [group] end) as c3,
      max(case when cloumnName='c4' then [group] end) as c4
     from tableB
) b join tableA a on b.c1=a.c1 and b.c2=a.c2 and b.c3=a.c3 and b.c4=a.c4

相关问题