如何在SQL中合并列和转置?
我正在使用一个自定义DBMS(符合SQL 2011标准),并尝试将多个列合并为一个列,就像这样,但我在语法方面遇到了困难: 当前表格:如何在SQL中合并列和转置?,sql,database,transpose,Sql,Database,Transpose,我正在使用一个自定义DBMS(符合SQL 2011标准),并尝试将多个列合并为一个列,就像这样,但我在语法方面遇到了困难: 当前表格: ------------------------------------------ | ID | setting_A | setting_B | setting_C | ------------------------------------------ | 1 | ON | OFF | UNKNOWN | ----------
------------------------------------------
| ID | setting_A | setting_B | setting_C |
------------------------------------------
| 1 | ON | OFF | UNKNOWN |
------------------------------------------
所需的查询输出:
------------------------------
| ID | Setting | Value |
------------------------------
| 1 | A | ON |
------------------------------
| 1 | B | OFF |
------------------------------
| 1 | C | UNKNOWN |
------------------------------
我尝试过各种IF和CASE语句,但都遇到了麻烦。任何帮助都将不胜感激。您可以使用union all取消PIVOT
:
select id, 'A' setting, setting_A value from mytable
union all select id, 'B', setting_B from mytable
union all select id, 'C', setting_C from mytable
这假设setting_A
、setting_B
和setting_C
属于相同的数据类型(否则,在组合结果集之前,需要进行转换以对齐数据类型)
:
id | setting | value
-: | :------ | :------
1 | A | ON
1 | B | OFF
1 | C | UNKNOWN
id |设置|值
-: | :------ | :------
1 | A | ON
1 | B |关
1 | C |未知
你在使用什么数据库?