2009-02-04 11 views
1

j'ai une question similaire à celui SQL products/productsalesfonctions SQL globales

Je veux faire la même requête, mais au lieu de simplement vérifier la quantité que je veux vérifier « total » (c.-à-quantité. Prix *). "price" est un champ dans la table des ventes.

ici est la requête initiale suggéré sur ce lien:

SELECT p.[name] 
FROM products p 
WHERE p.product_id in (SELECT s.product_id 
    FROM productsales s 
    WHERE s.[date] between @dateStart and @dateEnd 
    GROUP BY s.product_id 
    HAVING Sum(s.quantity) > @X) 

donc au lieu de Somme (s.quantity) je dois avoir (s.quantity * s.price) pour chaque vente à ajouter jusqu'à puis comparé à @X. (le prix peut être différent pour chaque vente)

+0

Pourriez-vous insérer votre requête et le message d'erreur, s'il vous plaît? Vous pouvez éditer votre question. – splattne

Répondre

1
HAVING (Sum(s.quantity*s.price)) > @X 

pourrait faire l'affaire?

+0

Je suis occupé à tester cela. ça semble juste. Je vais éditer ce commentaire un peu plus tard. Merci! –

+0

il semble que je ne peux pas éditer les commentaires :) désolé pour le spam. De toute façon j'ai édité ma question. votre réponse originale fonctionne si le prix est le même pour chaque vente. –

0

(La réponse de Cagcowboy a été marquée comme acceptée, mais le commentaire semble indiquer qu'il n'a pas fonctionné, c'est donc une autre approche)

Ce code utilise une table dérivée d'abord travailler les « totaux » pour chaque produit, alors le groupement etc. est superposé au-dessus de cela.

SELECT p.name from products p 
WHERE p.product_id IN 
    (SELECT product_id from 
     (SELECT product_id, (quantity * price) as total 
     FROM productsales WHERE date between @dateStart and @dateEnd) as s 
    GROUP by s.product_id 
    HAVING sum(total) > @x) 
Questions connexes