Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中合并列和转置?_Sql_Database_Transpose - Fatal编程技术网

如何在SQL中合并列和转置?

如何在SQL中合并列和转置?,sql,database,transpose,Sql,Database,Transpose,我正在使用一个自定义DBMS(符合SQL 2011标准),并尝试将多个列合并为一个列,就像这样,但我在语法方面遇到了困难: 当前表格: ------------------------------------------ | ID | setting_A | setting_B | setting_C | ------------------------------------------ | 1 | ON | OFF | UNKNOWN | ----------

我正在使用一个自定义DBMS(符合SQL 2011标准),并尝试将多个列合并为一个列,就像这样,但我在语法方面遇到了困难:

当前表格:

------------------------------------------
| 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 |未知
你在使用什么数据库?