Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 将行拆分为多行Oracle_Sql_Oracle - Fatal编程技术网

Sql 将行拆分为多行Oracle

Sql 将行拆分为多行Oracle,sql,oracle,Sql,Oracle,我有一个有5列的表:ID,ERROR1,ERROR2,ERROR3,ERROR4 小样本如下所示: ID | Error 1 | Error 2 | Error 3 | Error 4 | 12 | YES | (null) | (null) | YES | 15 | (null) | YES | (null) | YES | 因此,我需要了解如何在多个列中用Yes分隔一行数据,并将其转换为具有相同ID的多个实例,并且对于该实例,只有一列读取Yes。因此,有两条12的记录

我有一个有5列的表:ID,ERROR1,ERROR2,ERROR3,ERROR4

小样本如下所示:

ID | Error 1 | Error 2 | Error 3 | Error 4 | 12 | YES | (null) | (null) | YES | 15 | (null) | YES | (null) | YES | 因此,我需要了解如何在多个列中用Yes分隔一行数据,并将其转换为具有相同ID的多个实例,并且对于该实例,只有一列读取Yes。因此,有两条12的记录和两条15的记录,每一条记录只有一个错误,对于任何一行,其余的都为空


谢谢你

也许会有帮助,但我不确定我是否正确理解了你的预期结果:

 SELECT ID, Error1, NULL AS Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error1 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error2 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, Error3, NULL AS Error4
   FROM table
  WHERE Error3 = 'YES'
   UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, NULL AS Error3, Error4
   FROM table
  WHERE Error4 = 'YES'

也许这有帮助,但我不确定,如果我正确理解您的预期结果:

 SELECT ID, Error1, NULL AS Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error1 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error2 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, Error3, NULL AS Error4
   FROM table
  WHERE Error3 = 'YES'
   UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, NULL AS Error3, Error4
   FROM table
  WHERE Error4 = 'YES'

也许这有帮助,但我不确定,如果我正确理解您的预期结果:

 SELECT ID, Error1, NULL AS Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error1 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error2 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, Error3, NULL AS Error4
   FROM table
  WHERE Error3 = 'YES'
   UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, NULL AS Error3, Error4
   FROM table
  WHERE Error4 = 'YES'

也许这有帮助,但我不确定,如果我正确理解您的预期结果:

 SELECT ID, Error1, NULL AS Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error1 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, Error2, NULL AS Error3, NULL AS Error4
   FROM table
  WHERE Error2 = 'YES'
  UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, Error3, NULL AS Error4
   FROM table
  WHERE Error3 = 'YES'
   UNION
    ALL
 SELECT ID, NULL AS Error1, NULL AS Error2, NULL AS Error3, Error4
   FROM table
  WHERE Error4 = 'YES'

作为另一种解决方案,您可以在上联接您的表,并在join子句中使用不等于NULL的受益人:


请参见

作为替代解决方案,您可以在上联接表,并在join子句中使用不等于NULL的受益人:


请参见

作为替代解决方案,您可以在上联接表,并在join子句中使用不等于NULL的受益人:


请参见

作为替代解决方案,您可以在上联接表,并在join子句中使用不等于NULL的受益人:


请参见

我想您正在查找以下查询的输出

SELECT ID,
DECODE(COL_NUM,
    1, "ERROR 1",
    2, "ERROR 2",
    3, "ERROR 3",
    "ERROR 4") AS ERROR_COL
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) AS ERROR
FROM
TABLE,
(SELECT ROWNUM AS COL_NUM FROM DUAL WHERE ROWNUM<5)
WHERE
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) IS NOT NULL 
ID—错误\u列—错误

12--错误1--是

12--错误4--是

15--错误2--是


15--错误4--是

我想您正在寻找以下查询的输出

SELECT ID,
DECODE(COL_NUM,
    1, "ERROR 1",
    2, "ERROR 2",
    3, "ERROR 3",
    "ERROR 4") AS ERROR_COL
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) AS ERROR
FROM
TABLE,
(SELECT ROWNUM AS COL_NUM FROM DUAL WHERE ROWNUM<5)
WHERE
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) IS NOT NULL 
ID—错误\u列—错误

12--错误1--是

12--错误4--是

15--错误2--是


15--错误4--是

我想您正在寻找以下查询的输出

SELECT ID,
DECODE(COL_NUM,
    1, "ERROR 1",
    2, "ERROR 2",
    3, "ERROR 3",
    "ERROR 4") AS ERROR_COL
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) AS ERROR
FROM
TABLE,
(SELECT ROWNUM AS COL_NUM FROM DUAL WHERE ROWNUM<5)
WHERE
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) IS NOT NULL 
ID—错误\u列—错误

12--错误1--是

12--错误4--是

15--错误2--是


15--错误4--是

我想您正在寻找以下查询的输出

SELECT ID,
DECODE(COL_NUM,
    1, "ERROR 1",
    2, "ERROR 2",
    3, "ERROR 3",
    "ERROR 4") AS ERROR_COL
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) AS ERROR
FROM
TABLE,
(SELECT ROWNUM AS COL_NUM FROM DUAL WHERE ROWNUM<5)
WHERE
DECODE(COL_NUM,
        1, ERROR1,
        2, ERROR2,
        3, ERROR3,
        ERROR4) IS NOT NULL 
ID—错误\u列—错误

12--错误1--是

12--错误4--是

15--错误2--是

15--错误4--是