一尘不染

连接来自同一表的两个选择查询

sql

该表包含一个ID列,valueHeading列和一个value列。我想将value列分为两个新列,分别称为valueHeading1和valueHeading2,具体取决于值具有哪种valueHeading类型。

所以我想加入这个选择: 编辑:完全加入

SELECT ID
      ,valueHeading
      ,value as 'valueHeading1'
FROM table1
WHERE valueHeading = 'valueHeading1'

使用此选择:

SELECT ID
      ,value as 'valueHeading2'
FROM table1
WHERE valueHeading = 'valueHeading2'

在各自的ID上。我该怎么做呢?

编辑 以说明我要执行的操作:

原始表格:

ID    valueHeading    value
0     valueHeading1    a
0     valueHeading2    a
1     valueHeading1    ab
1     valueHeading2    NULL
2     valueHeading1    abcd
2     valueHeading2    abc

新表:

ID    valueHeading1    valueHeading2
0          a               a
1          ab              NULL
2         abcd             abc

阅读 119

收藏
2021-05-23

共1个答案

一尘不染

在SQLServer2005 +中可能使用PIVOT

SELECT ID, valueHeading1, valueHeading2
FROM
(
 SELECT *
 FROM dbo.test28
 WHERE valueHeading IN ('valueHeading1', 'valueHeading2')
 ) x
 PIVOT
 (
  MAX(value)
  FOR valueHeading IN ([valueHeading1], [valueHeading2])
  ) p
2021-05-23