根据列值,我需要在Oracle sql中执行2个不同的查询。
表A
Col1 Col2
R51 desc_r51
R52 desc_r52
R53 desc_r53
表B
Col1 Type Username
R51 All A
R52 Specific B
现在我需要编写一个查询,其中
所以在这种情况下,如果Type为All,那么结果应为 R51,R52,R53
如果Type为Specific,则结果应为 R52
任何帮助?
答案 0 :(得分:0)
试试这个
select A.col1
from A
where exists (select 1 from B where type = 'All')
union
select B.col1
from A, B
where A.Col1 = B.Col1 and
B.Type = 'Specific'
答案 1 :(得分:0)
你可以试试这个。
SELECT 'SELECT '
||CASE
WHEN TYPE = 'All' THEN (SELECT Listagg(col1, ',')
within GROUP ( ORDER BY col1 )
FROM tablea)
WHEN TYPE = 'Specific'
AND EXISTS (SELECT 1
FROM tablea a
WHERE a.col1 = b.col1) THEN b.col1
END
||' FROM TABLEA;' as select_statement
FROM tableb b;
输出
SELECT_STATEMENT
SELECT R51,R52,R53 FROM TABLEA;
SELECT R52 FROM TABLEA;