给出以下查询
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句