选择数据取决于IF ELSE条件

时间:2016-06-06 11:04:50

标签: oracle oracle11g oracle-sqldeveloper oracle12c

我的查询如下:

SELECT R.*
FROM 
(
    WITH TABLE_X AS
    (
        SELECT A,B,C FROM Y
    )

    --PSEUDO CODE
     IF (COUNT(TABLE_X.*) > 0)
        THEN SELECT CONCAT(A ,B, C) FROM TABLE_X
     ELSE 'No Data'
     END
) R

在这种情况下,如果TABLE_X有数据,则选择将返回A,B,C。在其他方面,这将返回其他类似“无数据”的内容。

请帮我澄清并提出一些解决方案。 谢谢你的关注。

2 个答案:

答案 0 :(得分:0)

如果TABLE_X中最多有一行,则可以使用聚合:

WITH TABLE_X AS (
      SELECT A, B, C FROM Y
    )
SELECT (CASE WHEN COUNT(*) = 0 THEN 'No Data'
             ELSE MAX(A || B || C)
        END) as col
FROM TABLE_X;

或者,使用UNION ALL

WITH TABLE_X AS (
      SELECT A, B, C FROM Y
    )
SELECT A || B || C as col
FROM TABLE_X
UNION ALL
SELECT 'No Data'
FROM Dual
WHERE NOT EXISTS (SELECT 1 FROM TABLE_X);

答案 1 :(得分:0)

你也在查询我认为你只需要

 select  nvl( A||B,||C , 'No data') 
 from y