ORACLE SQL-基于逻辑对记录进行分类
根据逻辑对记录进行分类的最佳方法是什么 例如,在此表中:ORACLE SQL-基于逻辑对记录进行分类,sql,oracle,Sql,Oracle,根据逻辑对记录进行分类的最佳方法是什么 例如,在此表中: ID House Farm 1 (null) (null) 我想输出: ID Missing 1 House 1 Farm 除了下面这些明显的结合,还有更好的方法吗?可能是什么时候?在处理更多的条件时,工会都不会轻易灵活 select ID, 'House' as Missing from table where house is null union all select ID, 'Farm' as Missing fro
ID House Farm
1 (null) (null)
我想输出:
ID Missing
1 House
1 Farm
除了下面这些明显的结合,还有更好的方法吗?可能是什么时候?在处理更多的条件时,工会都不会轻易灵活
select ID, 'House' as Missing from table where house is null
union all
select ID, 'Farm' as Missing from table where farm is null
虽然我不知道它是否比UNION ALL更有效,但另一种选择是使用
UNPIVOT
,具体取决于您使用的Oracle版本:
SELECT ID, Missing
FROM (
SELECT *
FROM YourTable
UNPIVOT INCLUDE NULLS (IsMissing FOR Missing IN (House as 'House', Farm as 'Farm'))
) t
WHERE IsMissing IS NULL
这里是。虽然我不知道它是否比
UNION ALL
更有效,但另一个选择是根据您使用的Oracle版本使用UNPIVOT
:
SELECT ID, Missing
FROM (
SELECT *
FROM YourTable
UNPIVOT INCLUDE NULLS (IsMissing FOR Missing IN (House as 'House', Farm as 'Farm'))
) t
WHERE IsMissing IS NULL
这是结果。请使用UNPIVOT检查结果。有关更多详细信息,请查看链接
SELECT
ID, MISSING
FROM
(
SELECT ID, NVL(HOUSE, 1) HOUSE, NVL(FARM, 1) FARM FROM YourTable
)x
UNPIVOT (
DCol
FOR MISSING
IN (HOUSE, FARM)
);
或
请使用UNPIVOT检查结果。有关更多详细信息,请查看链接
SELECT
ID, MISSING
FROM
(
SELECT ID, NVL(HOUSE, 1) HOUSE, NVL(FARM, 1) FARM FROM YourTable
)x
UNPIVOT (
DCol
FOR MISSING
IN (HOUSE, FARM)
);
或
什么版本的Oracle?在11g中,您可能会使用
UNPIVOT
操作符。Oracle的哪个版本?在11g中,您可能会使用UNPIVOT
操作符。