Announcement

Collapse
No announcement yet.

2 Tabellen verknüpfen und Werte nebeneinander nach Datum gruppiert darstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 Tabellen verknüpfen und Werte nebeneinander nach Datum gruppiert darstellen

    Hallo Forum,

    ich hoffe das ich hier Hilfe finde.
    Mein Problem ist folgendes...

    Tabelle 1:
    T1.jpg

    Tabelle 2:
    T2.jpg

    die Abfrage:

    select distinct bm.Date, test.MengeNor, test.MengeHS from buchungsmenge bm
    inner join (
    select bm1.Menge as MengeNor, bm2.Menge as MengeHS, bm1.Date as DatumNor, bm2.Date as DatumHS
    from material m1
    left outer join buchungsmenge bm1 on m1.ID = bm1.MATID and m1.ProduktNr = '376'
    left outer join buchungsmenge bm2 on m1.ID = bm2.MATID and m1.ProduktNr = '378'
    ) as test
    on test.DatumNOR = bm.Date or test.DatumHS = bm.Date
    where bm.Date between '2012-08-25' and '2012-08-26'


    das Ergebnis:
    T3.jpg

    Meine Frage:
    Gibt es eine Möglichkeit MengeNor und MengeHS bei gleichen Buchungsdatum in einer Zeile auszugeben?
    Ich sitze schon einige Zeit und experimentiere, aber irgendwie gelingt es mir nicht.
    Vielleicht kann mir jemand aus dem Forum helfen, oder einen Anstoß geben.

    Vielen Dank im Vorraus
    Der DBMann :-)

  • #2
    Originally posted by DBMann View Post
    Meine Frage:
    Gibt es eine Möglichkeit MengeNor und MengeHS bei gleichen Buchungsdatum in einer Zeile auszugeben?
    Ich sitze schon einige Zeit und experimentiere, aber irgendwie gelingt es mir nicht.
    Vielleicht kann mir jemand aus dem Forum helfen, oder einen Anstoß geben.

    Vielen Dank im Vorraus
    Der DBMann :-)
    Vielleicht so?

    Code:
    test=*# select * from dbman ;
       datum    | menge_nor | menge_hs
    ------------+-----------+----------
     2012-08-26 |        23 |
     2012-08-25 |        22 |
     2012-08-25 |           |       16
    (3 rows)
    
    test=*# select datum, sum(menge_nor), sum(menge_hs) from dbman group by datum;
       datum    | sum | sum
    ------------+-----+-----
     2012-08-26 |  23 |
     2012-08-25 |  22 |  16
    (2 rows)
    Andreas

    Comment


    • #3
      Hallo akretschmer,

      vielen Dank für die Antwort.
      Das wäre richtig wenn man sich auf eine Tabelle bezieht.
      Genau so soll das Ergebnis sein.
      Ich benutze aber zwei Tabellen, zum einen die Tabelle mit den Buchungsmengen und dem Datum, zum anderen die Materialtabelle mit den ProduktID's.

      Code:
      select distinct bm.Date, test.MengeNor, test.MengeHS from buchungsmenge bm
      inner join (
      select bm1.Menge as MengeNor, bm2.Menge as MengeHS, bm1.Date as DatumNor, bm2.Date as DatumHS
      from material m1
      left outer join buchungsmenge bm1 on m1.ID = bm1.MATID and m1.ProduktNr = '376'
      left outer join buchungsmenge bm2 on m1.ID = bm2.MATID and m1.ProduktNr = '378'
      ) as test
      on test.DatumNOR = bm.Date or test.DatumHS = bm.Date
      where bm.Date between '2012-08-25' and '2012-08-26'
      Die zwei Summenspalten sind 2 unterschiedliche Produkte, die durch die ProdukID (siehe Code) unterschieden werden

      oder verstehe ich dich jetzt falsch?

      Comment


      • #4
        Originally posted by DBMann View Post
        Hallo kretschmer,

        vielen Dank für die Antwort.
        Das wäre richtig wenn man sich auf eine Tabelle bezieht.
        Genau so soll das Ergebnis sein.
        Ich benutze aber zwei Tabellen, zum einen die Tabelle mit den Buchungsmengen und dem Datum, zum anderen die Materialtabelle mit den ProduktID's.

        oder verstehe ich dich jetzt falsch?
        Ja ;-)

        Deine Abfrage liefert ja ein Resultat. Auf dieses wendest Du das an, was ich Dir gzeigt habe.

        Andreas

        Comment


        • #5
          Ok,

          dankesehr, ich versuche es gleich wenn an meine Daten rankomme.
          Bis dahin noch einmal Danke und einen schönen Tag.

          Comment


          • #6
            Hallo akretschmer,

            ich denke du meintest das so...
            Code:
            select distinct bm.Date, sum(test.MengeNor), sum(test.MengeHS) from buchungsmenge bm
            inner join (
            select bm1.Menge as MengeNor, bm2.Menge as MengeHS, bm1.Date as DatumNor, bm2.Date as DatumHS
            from material m1
            left outer join buchungsmenge bm1 on m1.ID = bm1.MATID and m1.ProduktNr = '376' 
            left outer join buchungsmenge bm2 on m1.ID = bm2.MATID and m1.ProduktNr = '378'
            ) as test
            on test.DatumNOR = bm.Date or test.DatumHS = bm.Date
            where bm.Date between '2012-08-25' and '2012-08-26'
            group by bm.Date
            Damit habe ich faßt das Ergebnis das ich wollte, nur leider werden bei doppelten Datum die Summen verdoppelt.

            result.jpg

            Vielleicht noch irgend eine Idee?
            Oder mache ich wieder was falsch?

            Grüße Steven alias DBMann

            Comment

            Working...
            X