2013-05-21 4 views
0

Je suis nouveau à la base de données oracle, je suis en train d'exécuter la requête suivanterequête dynamique aux données dynamiques

select o.id as ovaid , 
(case when(select count(m.cid) from ovamapper m where m.id = o.id and m.solutionid = 1)>0 then 1 else 0 end) as sol1, 
(case when(select count(m.cid) from ovamapper m where m.id = o.id and m.solutionid = 2)>0 then 1 else 0 end) as sol1, 
(case when(select count(m.cid) from ovamapper m where m.id = o.id and m.solutionid = 3)>0 then 1 else 0 end) as sol1 from ovatemplate o order by o.id 

au lieu des valeurs statiques pour solutionid, je voudrais le sélectionner d'autres tables.

Toute aide sur ce qui est vraiment apprécié

+0

S'il vous plaît fournir le schéma de la table pour plus de clarté –

Répondre

0

vous pouvez utiliser

rejoindre

à la table qui contiennent le solutionid. ex

Select * from ovatemplate JOIN solutiontable ON (solutiontable.ovaid=ovatempate.ovaid) 

après, modifiez les valeurs statiques pour solutionid

0

Essayez cette requête

select o.id as ovaid , 
     count(case when solutionid = 1 then m.cid else null end) as sol1 , 
     count(case when solutionid = 2 then m.cid else null end) as sol2 , 
     count(case when solutionid = 3 then m.cid else null end) as sol3 
from ovamapper m , ovatemplate o 
where m.id = o.id 
group by o.id 
order by o.id 

Si vous ne avez pas besoin les agrégations que les colonnes que vous devriez probablement le faire à la place

select o.id as ovaid , solutionid , count(*) as sol 
from ovamapper m , ovatemplate o 
where m.id = o.id 
and  m.solutionid in (1,2,3) 
group by o.id , solutionid 
order by o.id 
+0

Merci pour la réponse ... mais dans la requête ci-dessus la solu Les identificateurs sont statiques ... Je veux que les ID de solution proviennent d'une table différente, comme "select solutionid from table2" – SUSER

Questions connexes