Je crois qu'il existe un moyen de le faire, mais je ne connais pas ORACLE 10g comme beaucoup d'autres personnes. Voici le scénario:ORACLE SQL: SUMS multiples dépendant de CODE dans une déclaration
Je suis en train de convertir des pages ASP classiques en ASP.net 2.0. J'ai une requête qui crée un rapport. C'est le rapport des ventes contre les ventes précédentes. Ce qui se passe actuellement, c'est qu'une requête est envoyée à la base de données et que vous saisissez une liste complète des emplacements qui vendent nos produits. Ensuite, il parcourt chaque ligne des emplacements et exécute certaines opérations de sommation en SQL.
Il sort à quelques autres tables, résume les quantités de ventes, puis ajoute la somme à une ligne de table, etc. Puisque la requête de localisations renvoie beaucoup de résultats, la requête dure 2-3 bonnes minutes.
Ma question est comment puis-je consolider tous ces dans une requête.
EMPLACEMENTS QUERY:
SELECT DISTINCT t.location,
l.city,
f.year,
f.customer FROM loc t,
location l, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND t.location= l.code(+)
AND t.code IN ('C', 'S')
AND t.co_code IN ('G', 'V', 'A', 'D')
AND t.year = '2008'
ORDER BY l.city, f.year
La requête de somme pour chacune des lignes de la requête ci-dessus est la suivante:
SELECT SUM(nvl(t.sale_quantity,0)) sale_quantity
FROM loc t, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND f.year = '2008'
AND t.code = 'C'
AND t.location = '1566' <----- EACH ROW'S t.location VALUE
AND t.co_code IN ('G', 'V', 'A', 'D')
GROUP BY t.location, t.code, f.year
Au lieu d'une boucle à travers chaque enregistrement de la requête d'origine, est-il Je peux combiner les requêtes et avoir la SUM dans la requête de l'emplacement. La clé ici est que la deuxième requête obtient seulement la somme de ventes quand le t.code = 'C' pas 'C' & 'S'