Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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_Oracle - Fatal编程技术网

SQL将多个列的表简化为更少的列

SQL将多个列的表简化为更少的列,sql,oracle,Sql,Oracle,我有一张如下所示的表格: PO_ID | PO_TYPE | PO_STAT | MR_ID | MR_TYPE | MR_STAT | IN_ID | IN_TYPE | IN_STAT 1 | A1 | CO | 1 | B1 | DR | 1 | C1 | CO 2 | A1 | CO | 2 | B2 | CO | 2 | C1 | CO

我有一张如下所示的表格:

PO_ID | PO_TYPE | PO_STAT | MR_ID | MR_TYPE | MR_STAT | IN_ID | IN_TYPE | IN_STAT
  1   |   A1    |   CO    |   1   |   B1    |   DR    |   1   |   C1    |  CO
  2   |   A1    |   CO    |   2   |   B2    |   CO    |   2   |   C1    |  CO
我想把这个表简化成这样:

ID   |  TYPE  | STAT
 1   |  A1    | CO
 2   |  A1    | CO
 1   |  B1    | DR
 2   |  B2    | CO
 1   |  C1    | CO
 1   |  C1    | CO

怎么可能呢

你可以试试这样的

 select PO_ID as ID,PO_TYPE as TYPE,PO_STAT as STAT from table
    union all
 select MR_ID,MR_TYPE,MR_STAT from table

.... and so on
您可以使用Union all来实现这一点


除了这个答案。重命名列名。从表中选择采购订单ID作为ID,采购订单类型作为类型,采购订单统计作为统计
SELECT PO_ID AS ID, PO_TYPE AS TYPE, PO_STAT AS STAT FROM TABLE
UNION ALL 
SELECT MR_ID AS ID, MR_TYPE AS TYPE, MR_STAT AS STAT FROM TABLE
UNION ALL
SELECT IN_ID AS ID, IN_TYPE AS TYPE, IN_STAT AS STAT FROM TABLE