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的记录和两条15的记录,每一条记录只有一个错误,对于任何一行,其余的都为空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的记录
谢谢你也许会有帮助,但我不确定我是否正确理解了你的预期结果:
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--是