2010-02-06 3 views
1

J'ai une table qui a une date, un article et une quantité.sql pour calculer les totaux quotidiens minimise les totaux du jour précédent

J'ai besoin d'une requête sql pour retourner les totaux par jour, mais le total est la quantité moins les totaux du jour précédent. La quantité s'accumule au fil du mois. Ainsi, le 1er pourrait avoir 5 le 2 ont 12 et 3 a 20.

Ainsi, le 1er ajoute 5 2 ajoute 7 pour faire 12 3 ajoute 8 à 20.

faire

Je l'ai fait quelque chose comme ceci dans le passé, mais ne peut pas le trouver ou se souvenir. Je sais que je vais avoir besoin d'une sous-requête corrélée.

TIA

-

Modifier 1

J'utilise Microsoft Access. La date est un champ datetime, article est un texte, et la quantité est le numéro

-

Edit 2

Ok c'est ce que j'ai

SELECT oos.report_date, oos.tech, oos.total_cpe, oos_2.total_cpe 
    FROM oos INNER JOIN (
    SELECT oos_2.tech, Sum(oos_2.total_cpe) AS total_cpe 
    FROM oos_2 
    WHERE (((oos_2.report_date)<#10/10/2010#)) 
    GROUP BY oos_2.tech 
    ) oos_2 ON oos.tech = oos_2.tech; 

Comment puis-je obtenir le oos.report_date dans où je dis # 10/10/2010 #. J'ai pensé que je pourrais juste y coller comme mysql, mais pas de chance. Je vais continuer mes recherches.

+3

Quelle base de données utilisez-vous (y compris la version), et veuillez énumérer les tables et colonnes impliquées, y compris les types de données. –

+0

Je sais que j'ai besoin d'obtenir le total pour toutes les semaines précédentes et moins à partir des totaux de jours. Je travaille dessus maintenant, je posterai ce que j'ai fait jusqu'ici en une seconde. – Jeremiah

+0

J'ai dupliqué les tables car msaccess s'en plaignait. Je ne sais pas ce qu'il y a de mieux, mais je peux contourner ce problème quand j'aurai construit la requête. – Jeremiah

Répondre

0

Ok, je compris.

SELECT o.report_date, o.tech, o.total_cpe, 
o.total_cpe - (
    SELECT IIf(Sum(oos.total_cpe) is null, 0,Sum(oos.total_cpe)) AS total_cpe 
    FROM oos 
    WHERE (((oos.tech)=o.tech) AND ((oos.report_date)<o.report_date)) 
) AS total 
FROM oos o; 
+0

D'une certaine façon, j'ai besoin de consolider cette déclaration si. Je cours cette somme deux fois je crois. – Jeremiah

0

les Somme en ajoutant un à la date et rendant la valeur négative, prenant ainsi le total de hier aujourd'hui:

SELECT report_date, tech, Sum(total_cpe) AS total_cpe 
FROM (
    SELECT oos.report_date, oos.tech, oos.total_cpe 
    FROM oos 
    UNION ALL 
    SELECT oos.report_date+1, oos.tech, 0-oos.total_cpe 
    FROM oos 
) 
WHERE (report_date < #10/10/2010#) 
GROUP BY report_date, tech 
ORDER BY report_date, tech 
Questions connexes