Ich habe zwei Tabellen, und die Join-Bedingung muss von einem bestimmten Wert der zweiten Tabelle abhängen. In der folgenden Tabelle ist die Zeile die Join-Bedingung, die ich versuche zu implementieren, aber es wirft Kompilierungsfehler, nicht sicher, wie dies zu tun ist.Oracle-SQL-Join mit case-Anweisung
Hinweis: Dies ist ein Teil einer großen Abfrage, Join wird effizienter Weg sein.
Linie Wurf Kompilierungsfehler
data.hasIndicator in (case when prim.ind = 'YES' then 'YES' when prim.ind = 'NO' then ('YES','NO') end)
- vollständige SQL
with data as
(select
'YES' hasIndicator, 'Gold' item, 12 itemId
from dual
union
select
'YES' hasIndicator, 'Silver' item, 13 itemId
from dual
union
select
'NO' hasIndicator, 'Platinum' item, 14 itemId
from dual),
prim as
(select
'NO' ind, 1 id
from dual
union
select
'YES' ind, 2 id
from dual)
select *
from prim
join data on
data.hasIndicator in (case when prim.ind = 'YES' then ('YES') when prim.ind = 'NO' then ('YES','NO') end)
where
id = 1;