Announcement

Collapse
No announcement yet.

Bitte Hilfe (für euch sicherlich einfach)

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

  • Bitte Hilfe (für euch sicherlich einfach)

    Hallo,

    ich mache gerade eine Auswertung der im Lager befindlichen Rohstoffe. Der Quelltext dazu ist:

    Code:
    SELECT 
    Buchungseinheiten.ArtikelNr, 
    Artikelstamm.Artikelbezeichnung, 
    Buchungseinheiten.ZielCharge, 
    Buchungseinheiten.EinheitenNr, 
    Buchungseinheiten.Menge, 
    Buchungseinheiten.VerfallZielcharge
    
    
    FROM 
    quarisPROMIXDaten.dbo.Artikelstamm Artikelstamm, 
    quarisPROMIXDaten.dbo.Buchungseinheiten Buchungseinheiten
    
    
    WHERE 
    Artikelstamm.ArtikelNr = Buchungseinheiten.ArtikelNr 
    
    AND ((Buchungseinheiten.Menge>0) 
    AND (Buchungseinheiten.VerfallZielcharge<getdate()) 
    AND (Buchungseinheiten.ArtikelNr<'00010000000'))
    ORDER BY Buchungseinheiten.ArtikelNr
    Es wird mir angezeigt, welcher Rohstoff welchen Lagerbestand hat, der bereits abgelaufen ist. Wenn jetzt ein Rohstoff in z.B. zwei Fässern abgeliefert wurde hat er ja die gleiche Artikelnummer, Bezeichnung, ZielCharge und Verfalldatum, jedoch eine unterschiedliche Einheitennummer (und teilweise Menge). Jetzt möchte ich diese Einträge zusammenfassen. Also sollen alle Einträge so bleiben, nur die Menge soll addiert werden. Die Einheitennummer muss nicht eingetragen werden.

    Wie kann ich das machen?
    Zuletzt editiert von StormedPilotin; 19.11.2009, 11:11.

  • #2
    Bin jetzt schon bei Group By hängen geblieben, aber ich komm auch damit nicht klar. Ich hab jetzt:
    Code:
    SELECT 
    Buchungseinheiten.ArtikelNr, 
    Artikelstamm.Artikelbezeichnung, 
    Buchungseinheiten.ZielCharge, 
    Sum(Buchungseinheiten.Menge) AS 'Summe von Menge', Buchungseinheiten.VerfallZielcharge
    
    
    FROM 
    quarisPROMIXDaten.dbo.Artikelstamm Artikelstamm, quarisPROMIXDaten.dbo.Buchungseinheiten Buchungseinheiten
    
    WHERE 
    Artikelstamm.ArtikelNr = Buchungseinheiten.ArtikelNr
    
    GROUP BY 
    Buchungseinheiten.ArtikelNr, 
    Artikelstamm.Artikelbezeichnung, 
    Buchungseinheiten.ZielCharge, 
    Buchungseinheiten.VerfallZielcharge, 
    Buchungseinheiten.Menge
    
    HAVING 
    (Buchungseinheiten.Menge>0) 
    AND (Buchungseinheiten.VerfallZielcharge<getdate()) 
    AND (Buchungseinheiten.ArtikelNr<'00010000000')
    
    ORDER BY Buchungseinheiten.ArtikelNr
    Was mach ich falsch. Ich hab jetzt immernoch mehrere Zeilen mit gleicher ArtikelNr, Artikelbezeichnung, ZielCharge, VerfallZielcharge und teilweise unterschiedlicher MEnge, aber er addiert nicht

    Comment


    • #3
      Code:
      GROUP BY 
      Buchungseinheiten.ArtikelNr, 
      Artikelstamm.Artikelbezeichnung, 
      Buchungseinheiten.ZielCharge, 
      Buchungseinheiten.VerfallZielcharge, 
      Buchungseinheiten.Menge
      Du musst Buchungseinheiten.Menge aus dem GROUP BY nehmen. Sonst würde er ja nur Sätze summieren/gruppieren die auch die gleiche Menge haben.

      Comment


      • #4
        ach so jetzt hab ich auch group by verstanden

        Hätte aber noch eine Frage. Ich muss jetzt noch einfügen, in welchen Rezepturen die Rohstoffe enthalten sind. Das heißt zu jedem Rohstoff würden jetzt x (eine bis 20) Rezepturen dazukommen. Kann man das in einer weiteren Spalte als Fließtext darstellen? Also so, dass weiterhin nur ein Eintrag pro Rohstoff vorhanden ist.

        Comment


        • #5
          Hallo,
          Originally posted by StormedPilotin View Post
          ...Das heißt zu jedem Rohstoff würden jetzt x (eine bis 20) Rezepturen dazukommen. Kann man das in einer weiteren Spalte als Fließtext darstellen? Also so, dass weiterhin nur ein Eintrag pro Rohstoff vorhanden ist.
          Ja, kann man. Die konkrete Formulierung ist jedoch vom verwendeten DBMS abhängig. Bei MySQL gibt es dafür z.B. die GROUP_CONCAT(expr)-Funktion.

          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
            und woher weiß ich wie die bei mir heißt? Ich arbeite mit dem normalen MicrosoftQuery in Excel.

            Comment


            • #7
              Ich vermute mal Microsoft Query leitet das SQL nur an die Quelldatenbank aus der du Daten nach Excel importieren willst weiter. Den konkreten SQL Syntax sollte dir also die Hilfe zur benutzten Datenbank liefern(und/oder du verätst uns einfach welche Datenbank du benutzt).

              Comment


              • #8
                Hallo,
                Originally posted by StormedPilotin View Post
                und woher weiß ich wie die bei mir heißt? Ich arbeite mit dem normalen MicrosoftQuery in Excel.
                einen Stadard-SQL-Befehl gibt es dafür nicht. Jedoch bieten manche Datenbanken solch eine Funktionalität an - heißt aber durchaus bei jedem anders.
                MicrosoftQuery ist ja nur das Werkzeug mit dem du arbeitest. Wie heißt den die DB von der du die Daten beziehst? MS-SQL-Server, MySQL, Oracle, Firebird, ... (Reihenfolge ohne Wertigkeit )

                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


                • #9
                  MS SQL Server (Jahr müsste ich jetzt schätzen, irgendwas um 2000)

                  Comment


                  • #10
                    Dann verschieb ich es mal dahin und hoffe auf die MS-SQL-Experten

                    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


                    • #11
                      Hallo, also das ist der Text, den ich bisher habe. Momentan wird alles soweit angezeigt, wie ich das will, außer die Rezepturnummern. Aktuell gibt es zu jeder Artikelnummer mehrere Einträge, die sich durch die Rezepturnummern unterscheiden. Ich will aber als Key die ZielCharge und die Rezepturnummern nacheinander in ein Feld geschrieben, also nur eine Zeile pro Zielcharge. HInweise bisher waren Concat, aber das nimmt MS SQL nicht. Andere Ideen?

                      Code:
                      SELECT 
                      Buchungseinheiten.ArtikelNr, 
                      Artikelstamm.Artikelbezeichnung, 
                      Buchungseinheiten.ZielCharge, 
                      Sum(Buchungseinheiten.Menge) AS 'Summe von Menge', 
                      Buchungseinheiten.VerfallZielcharge, 
                      Rezepturpositionen.RezepturNr
                      
                      
                      FROM 
                      quarisPROMIXDaten.dbo.Artikelstamm Artikelstamm, 
                      quarisPROMIXDaten.dbo.Buchungseinheiten Buchungseinheiten, 
                      quarisPROMIXDaten.dbo.Rezepturpositionen Rezepturpositionen
                      
                      
                      WHERE 
                      Artikelstamm.ArtikelNr = Buchungseinheiten.ArtikelNr 
                      AND Artikelstamm.ArtikelNr = Rezepturpositionen.RohstoffNr
                      
                      
                      GROUP BY 
                      Buchungseinheiten.ArtikelNr, 
                      Artikelstamm.Artikelbezeichnung, 
                      Buchungseinheiten.ZielCharge, 
                      Buchungseinheiten.VerfallZielcharge, 
                      Rezepturpositionen.RezepturNr, 
                      Buchungseinheiten.Sperrmenge
                      
                      
                      HAVING 
                      (Buchungseinheiten.VerfallZielcharge<getdate()) AND 
                      
                      (Buchungseinheiten.ArtikelNr<'00010000000') AND 
                      
                      (Buchungseinheiten.Sperrmenge=0)
                      
                      
                      ORDER BY Buchungseinheiten.ArtikelNr

                      Comment

                      Working...
                      X