sql - 连接同一个表中的两个选择查询

标签 sql sql-server select join

该表包含一个 ID 列、一个 valueHeading 列和一个值列。我想根据值具有的 valueHeading 类型将值列分成两个名为 valueHeading1 和 valueHeading2 的新列。

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

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

最佳答案

如果你只需要加入使用这个。如果您不需要加入,使用 case when 是一种优雅的方式。

SELECT * FROM 
    (SELECT ID
          ,valueHeading
          ,value as 'valueHeading1'
    FROM table1
    WHERE valueHeading = 'valueHeading1') AS TAB_1, 
    (SELECT ID
          ,value as 'valueHeading2'
    FROM table1
    WHERE valueHeading = 'valueHeading2') AS TAB_2
    WHERE TAB_1.ID = TAB_2.ID

关于sql - 连接同一个表中的两个选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648405/

相关文章:

mysql - SQL查询同时返回带空格和不带空格的标签

c# - Entity Framework 6 - GetExecutionPlan 性能命中

mysql - 选择案例,计数(*)

sql - SQL/JDBC 中的内联 BLOB/BINARY 数据类型

sql - 使用 dbplyr 生成 CROSS JOIN 查询

sql - 使用子查询中的多个值进行更新

SQL Server 违反 PRIMARY KEY 约束 'PK

hibernate - JPA/JPQL : AS identifier disallowed in SELECT clause

mysql - 如何统计 channel 访问总数

java - SQL 查询可在 MySQL 中运行,但不能在 Java 中运行