在ORACLE 11 G中,我有一个带有这种输出的SELECT:
COL_A COL_B
------- -------
BCS (null)
(null) FFG
VKD FIU
...
字符串
我想要这个:
MY_ALIAS
---------
BCS
FFG
VKD
FIU
...
型
COL_A和COL_B是同一个表中的列。这个查询有点复杂。
正如你所看到的,有三种类型的行:COL_A有一个值,COL_B有一个null,相反的两列都有一个值。
我知道这可以用一个联合体这样做:
SELECT MY_ALIAS FROM (
SELECT (COL_A) AS MY_ALIAS
WHERE <lots of conditions here>
AND COL_A IS NOT NULL
UNION
SELECT (COL_B) AS MY_ALIAS
WHERE <lots of conditions here>
AND COL_B IS NOT NULL
)
型
但这样WHERE子句中的条件将完全相同,我想避免它。
有没有办法做到这一点,而不重复?没有PL/SQL,只需要一个SELECT查询
- 编辑以删除避免UNION子句的必要性。我的回答的主要目的是消除重复。*
谢谢你,谢谢
3条答案
按热度按时间toe950271#
可以尝试使用UNPIVOT FUNCTION
字符串
nhhxz33t2#
只需首先在包含所需列的所有记录上使用
UNION ALL
,加上where子句中需要的所有列。然后获取不同的值。字符串
9rbhqvlz3#
使用
WITH
子句应用您的条件:字符串