MySQL Forums
Forum List  »  German

Re: vorherige Summe in die laufende Zeile übertragen
Posted by: Thomas Wiedmann
Date: April 10, 2012 11:06AM

Hallo Alain,

wie immer ist es von Vorteil, ein komplettes Beispiel plus Testdaten mit zu liefern.
Rate ich also mal folgenes..

CREATE TABLE rechnen (
  id INT NOT NULL,
  datum DATE NOT NULL,
  knz INT NOT NULL,
  pNr INT NOT NULL,
  state INT NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO rechnen VALUES
( 1, '2012-04-02', 0, 12, 100),
( 2, '2012-04-02', 1, 13, 100),
( 3, '2012-04-03', 0, 4, 100),
( 4, '2012-04-03', 1, 7, 100),
( 5, '2012-04-04', 0, 22, 100),
( 6, '2012-04-04', 1, 5, 100),
( 7, '2012-04-05', 0, 10, 100),
( 8, '2012-04-05', 1, 30, 100),
( 9, '2012-04-10', 0, 9, 100),
(10, '2012-04-10', 1, 6, 100);

SELECT heute.datum, heute.anz1, heute.anz2, heute.anz_ges, gestern.anz_ges_vt
  FROM ( SELECT datum, 
                SUM( CASE knz 
                      WHEN 0 THEN pNr
                      ELSE 0
                     END) AS anz1,
                SUM( CASE knz 
                      WHEN 1 THEN pNr
                      ELSE 0
                     END) AS anz2,
                SUM( CASE knz 
                      WHEN 0 THEN pNr
                      WHEN 1 THEN pNr
                      ELSE 0
                     END) AS anz_ges
           FROM rechnen
           GROUP BY datum
        ) heute 
  LEFT JOIN ( SELECT datum, 
                SUM( CASE knz 
                      WHEN 0 THEN pNr
                      WHEN 1 THEN pNr
                      ELSE 0
                     END) AS anz_ges_vt
           FROM rechnen
           GROUP BY datum
        ) gestern
     ON heute.datum = DATE_ADD(gestern.datum, INTERVAL 1 DAY )
ORDER BY heute.datum;
+------------+------+------+---------+------------+
| datum      | anz1 | anz2 | anz_ges | anz_ges_vt |
+------------+------+------+---------+------------+
| 2012-04-02 |   12 |   13 |      25 |       NULL |
| 2012-04-03 |    4 |    7 |      11 |         25 |
| 2012-04-04 |   22 |    5 |      27 |         11 |
| 2012-04-05 |   10 |   30 |      40 |         27 |
| 2012-04-10 |    9 |    6 |      15 |       NULL |
+------------+------+------+---------+------------+
5 rows in set (0.00 sec)

mysql>

Das Ergebnis sieht ganz nett aus. Problem ist der 10.04.2012, da es da keinen echten Vortag gibt.

Wenn dies nicht ausreicht, dann bitte ein vollständiges Beispiel zusammenstellen:
a) CREATE TABLE von allen beteiligten Tabellen ( z. B. mysql>SHOW CREATE TABLE tbl1; )
b) passende Testdaten (INSERT ...) zu allen beteiligten Tabellen
c) Das Ergebnis dass jetzt rauskommt
d) das erwünschte Ergebnis

Grüße
Thomas

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: vorherige Summe in die laufende Zeile übertragen
1852
April 10, 2012 11:06AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.