解决 Oracle SQL 中的 "single-row subquery returns more than one row" 错误
Solving "single-row subquery returns more than one row" error in Oracle SQL
给出以下查询
Select COLUMN_ID, (Select
CASE COLUMN_ID
WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END
GROOVE
FROM ALL_TAB_COLS where TABLE_NAME = 'TBL_CARGO')
FROM ALL_TAB_COLS where COLUMN_ID IN(4,6,7,8)
我喜欢只获取非空白列。我期望每个字段显示输出 4 6 7 8。我该怎么做?
所有子查询和内联视图都可以在单个查询中完成:
使用CASE表达式(冗长易懂):
SELECT COLUMN_ID,
CASE COLUMN_ID
WHEN 4
THEN 'WEIGHT'
WHEN 6
THEN 'CARGO_LENGTH'
WHEN 7
THEN 'WIDTH'
WHEN 8
THEN 'HEIGHT'
END GROOVE
FROM ALL_TAB_COLS
WHERE TABLE_NAME = 'TBL_CARGO'
AND COLUMN_ID IN(4,6,7,8);
使用DECODE(看起来很短):
SELECT COLUMN_ID,
DECODE(COLUMN_ID, 4, 'WEIGHT', 6, 'CARGO_LENGTH', 7, 'WIDTH', 8, 'HEIGHT')
FROM ALL_TAB_COLS
WHERE TABLE_NAME = 'TBL_CARGO'
AND COLUMN_ID IN(4,6,7,8);
不需要子select,只需添加CASE
表达式。也许是这样的?
Select COLUMN_ID,
CASE COLUMN_ID WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END GROOVE
FROM ALL_TAB_COLS
where COLUMN_ID IN(4,6,7,8)
试试这个
Select COLUMN_ID,
CASE COLUMN_ID
WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END
GROOVE
FROM ALL_TAB_COLS where TABLE_NAME = 'TBL_CARGO'
and COLUMN_ID IN(4,6,7,8)
给出以下查询
Select COLUMN_ID, (Select
CASE COLUMN_ID
WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END
GROOVE
FROM ALL_TAB_COLS where TABLE_NAME = 'TBL_CARGO')
FROM ALL_TAB_COLS where COLUMN_ID IN(4,6,7,8)
我喜欢只获取非空白列。我期望每个字段显示输出 4 6 7 8。我该怎么做?
所有子查询和内联视图都可以在单个查询中完成:
使用CASE表达式(冗长易懂):
SELECT COLUMN_ID,
CASE COLUMN_ID
WHEN 4
THEN 'WEIGHT'
WHEN 6
THEN 'CARGO_LENGTH'
WHEN 7
THEN 'WIDTH'
WHEN 8
THEN 'HEIGHT'
END GROOVE
FROM ALL_TAB_COLS
WHERE TABLE_NAME = 'TBL_CARGO'
AND COLUMN_ID IN(4,6,7,8);
使用DECODE(看起来很短):
SELECT COLUMN_ID,
DECODE(COLUMN_ID, 4, 'WEIGHT', 6, 'CARGO_LENGTH', 7, 'WIDTH', 8, 'HEIGHT')
FROM ALL_TAB_COLS
WHERE TABLE_NAME = 'TBL_CARGO'
AND COLUMN_ID IN(4,6,7,8);
不需要子select,只需添加CASE
表达式。也许是这样的?
Select COLUMN_ID,
CASE COLUMN_ID WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END GROOVE
FROM ALL_TAB_COLS
where COLUMN_ID IN(4,6,7,8)
试试这个
Select COLUMN_ID,
CASE COLUMN_ID
WHEN 4 THEN 'WEIGHT'
WHEN 6 THEN 'CARGO_LENGTH'
WHEN 7 THEN 'WIDTH'
WHEN 8 THEN 'HEIGHT'
END
GROOVE
FROM ALL_TAB_COLS where TABLE_NAME = 'TBL_CARGO'
and COLUMN_ID IN(4,6,7,8)