Announcement

Collapse
No announcement yet.

Verschmelzung zweier Abfragen

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

  • Verschmelzung zweier Abfragen

    Hallo,
    ich habe folgendes Problem: Die beiden Abfragen funktionieren jeweils separat, nun sollen aber beide verschmolzen werden. Die 1. zeigt einen Lagerbestand in Größe 44 und die 2. die Umsätze der Größe 44 im Zeitraum xxx.


    1.) select art.warengruppe, war.bezeichnung,
    sum( case when agl.groesse = '44' then agl.bestand else 0 end)Bestand44,
    substr(agl.artikelnr,1,6),
    art.artikelbezeichnung1
    from agl
    join art on art.ArtikelNr = agl.ArtikelNr
    join war on war.warengruppe = art.warengruppe
    where
    agl.bestand > '0'
    and art.kollektion = 'BK3'
    and agl.lager >= '1'
    and agl.lager <= '102'
    group by art.warengruppe, war.bezeichnung,
    substr(agl.artikelnr,1,6),
    art.artikelbezeichnung1
    order by substr(agl.artikelnr,1,6)

    2.) select art.warengruppe, war.bezeichnung,
    sum( case when buc.groesse = '44' then buc.stueck else 0 end)Umsatz44,
    substr(buc.artikelnr,1,6),
    art.artikelbezeichnung1
    from buc
    join art on art.ArtikelNr = buc.ArtikelNr
    join war on war.warengruppe = art.warengruppe
    where
    buc.lager >= '1'
    and buc.lager <= '6'
    and buc.datum >= : Datum_von
    and buc.datum <= : Datum_bis
    and art.kollektion = 'BK3'
    group by art.warengruppe, war.bezeichnung,
    substr(buc.artikelnr,1,6),
    art.artikelbezeichnung1
    order by substr(buc.artikelnr,1,6)



    Vielen Dank schon im voraus!
    Gerald

  • #2
    Verschmelzen ist zwar recht poetisch, obwohl kommt drauf an, egal:
    Kannst Du das noch erläutern? Dann kann man Dir vielleicht einen Tip geben.
    Alle Zeilen der 2 Mengen in eine lange Liste?
    Alle Felder nebeneinander?
    ...
    unter welchen Bedigungen usw usw.
    Gruß, defo

    Comment


    • #3
      Hallo,
      vielen Dank für die Antwort. Im Prinzip soll die Ausgabe so aussehen: die x-Achse zeigt die Grössen (46, 48 ...) und die y die Artikel (Artikel 1, Artikel 2 ...). Ausgegeben sollen immer 2 Werte untereinander: oben = Bestand und unten = Umsatz. Im Beispiel also hat die Grösse 46, Artikel 1 einen Bestand von 10 und im Betrachtungszeitraum einen Umsatz von 35 gemacht.


      Grösse 46 48
      Artikel 1 Bestand 10 5
      Umsatz 35 17
      Artikel 2 Bestand 5 0
      Umsatz 75 5

      Kannst Du damit was anfangen??

      Viele Grüße

      So siehts besser aus ...

      liste.gif
      Zuletzt editiert von Christian Marquardt; 16.02.2012, 07:22. Reason: Beiträge zusammengeführt

      Comment


      • #4
        Eine Kreuz oder Pivottabelle. Ich bin mir nicht sicher, aber das geht mit SQL in Firebird nicht direkt.
        Entweder Du baust eine Prozedur dafür oder Du suchst nach einer Möglichkeit, das im Frontend darzustellen, also mit einem Report Generator.
        Vielleicht hilft Dir auch ein Zusatzmodul eines Drittanbieters.
        Gruß, defo

        Comment


        • #5
          Hallo,

          solche komplexen Formatierungen sind keine Aufgabe für eine reine SQL-Lösung. Hier ist eher ein entsprechendes Report-Tool gefragt, welches deine Abfrage passend in Form bringt.

          Und bitte beachten: Formatierung von SQL in Beiträgen

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Alles klar - danke für die Antworten!

            Comment


            • #7
              Originally posted by Falk Prüfer View Post
              solche komplexen Formatierungen sind keine Aufgabe für eine reine SQL-Lösung.
              Also das würde ich nicht als Formatierung bezeichnen, eher eine Transformation. Einge RDBMS können das ja auch.
              Gruß, defo

              Comment


              • #8
                Müsste dpch gehen

                Ich denke mit Standard (ANSI) SQL also auch Firebird bekommt man es doch hin.
                Ob es performant wird, bin ich mir aber nicht sicher.

                Du musst Deine beiden Datenquellen per UNION zusammenlegen und dann mit einem Self Join und Case When die neuen Spalten erzeugen.
                Gruß, defo

                Comment


                • #9
                  Danke, das sind ja neue Ansätze - probiere ich mal. Hoffentlich bekomme ich das hin, wenn nicht - melde ich mich nochmals ...

                  Comment

                  Working...
                  X