2009-11-24 7 views
0

Mon but est d'obtenir un résultat fixé comme suitvaleurs de comptage différentes d'enregistrement dans une requête

CODE | TOTAL1 | TOTAL2 
1 | 56  | 34 
2 | 12  | 15 
3 | 90  | 3 

Il y a 2 tables par exemple tableA et tableB
Les chiffres sont différents par tableB.type

SELECT code, COUNT (*) AS total1 
FROM tableA a 
WHERE a.ID IN (select ID from tableB 
    where type = 'XYZ') 
GROUP BY code 


SELECT code, COUNT (*) AS total2 
FROM tableA a 
WHERE a.ID IN (select ID from tableB 
    where type = 'ABC') 
GROUP BY code 

Je voudrais afficher le compteur pour chaque code par type dans la même requête

Merci à l'avance

Répondre

1

Sous-requêtes:

SELECT code, (select COUNT (*) AS total1 
FROM tableA a1 
WHERE a.ID IN (select ID from tableB 
    where type = 'XYZ') 
    and a1.code = tableA.code) as Total1, 
(select COUNT (*) AS total2 
FROM tableA a2 
WHERE a.ID IN (select ID from tableB 
    where type = 'ABC') 
    and a2.code = tableA.code) as Total2) 
from tableA 
group by Code 
+0

grands trucs merci – db83

3

Aucun sous-requête

SELECT a.code, 
sum(decode(b.type,'ABC',1,0)) AS total1,sum(decode(b.type,'XYZ',1,0)) AS total2 
FROM tableA a 
join tableB b on a.ID = b.ID 
GROUP BY a.code 

Cordialement
K

+0

fonctionne aussi :) merci – db83

1

Probablement l'une des nombreuses façons de la peau, il est à l'union des deux dans une vue en ligne et sélectionnez la somme des chiffres, comme ceci:

SELECT le code, SUM (total1) tot AL1, SUM (total2) total2 DE ( code de sélection, COUNT () total1, 0 total2 à partir de tableA un OÙ a.ID IN (ID de sélectionner tableB où type = 'XYZ') GROUP BY Code UNION code de sélection, 0, COUNT ()
dE tableA un OU a.ID IN (ID de sélectionner tableB où type = 'ABC') GROUP BY Code) GROUP BY code;

+0

comme le fait cette solution. Merci pour la réponse – db83

Questions connexes