根据ORACLE中的条件运行不同表中的两个SELECT查询之一 - 需要一个sql查询,而不是PL / SQL块

时间:2018-03-27 06:04:58

标签: sql oracle select conditional-statements

我需要像

这样的东西
if :TARGET like in ('A%', 'B%')
    Select x,y from T1
else if :TARGET like in ('C%', 'D%', 'E%')
    Select x,z from T2
end

它必须在单个sql查询中,而不是pl / sql块。 信息 - TARGET是用户的输入 所以select :TARGET from dual会给出需要分析的价值。

2 个答案:

答案 0 :(得分:3)

您可以尝试联合查询:

SELECT x, y FROM T1
WHERE :TARGET LIKE 'A%' OR :TARGET LIKE 'B%'
UNION ALL
SELECT x, y FROM t2
WHERE :TARGET LIKE 'C%' OR :TARGET LIKE 'D%' OR :TARGET LIKE 'E%'

感谢两个WHERE子句中的限制是互斥的,这意味着如果前半部分返回记录,则第二部分不会,反之亦然。

答案 1 :(得分:0)

SELECT X,Case When TARGET LIKE 'A%' OR TARGET LIKE 'B%' Then
      Y
WHEN TARGET  LIKE 'C%' OR TARGET LIKE 'D%' OR TARGET LIKE 'E%'
THEN  Z
End AS 'Y/Z'
From Table1

现场演示

  

http://sqlfiddle.com/#!9/4676764/2