Announcement

Collapse
No announcement yet.

SQL Anfänger - Frage zu Select Statement

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

  • SQL Anfänger - Frage zu Select Statement

    Hallo zusammen,

    ich habe eine Abfrage, die ich optisch gerne ein wenig anders gestalten würde;
    momentan wird jeder Verkäufer 12x aufgelistet, ich hätte aber gerne jeden Verkäufer nur 1x aufgelistet und für jedes Monat eine Spalte mit dem jeweiligen Ergebnis.
    Das übersteigt leider meine mageren SQL Kenntnisse.
    Wäre prima wenn mich jemand auf den richtigen Pfad bringen würde :-)
    [highlight=sql]SELECT [Salesperson Code] [Verkäufer], DATEPART (MONTH, [Posting Date])Monat, COUNT (DISTINCT [Order No_]) [Aufträge]
    FROM [Sales Shipment Header]
    WHERE DATEPART (YEAR, [Posting Date]) = 2009
    GROUP BY [Salesperson Code], [Posting Date]
    ORDER BY [Salesperson Code][/highlight]
    Zuletzt editiert von Baruse; 11.05.2010, 16:18.

  • #2
    [HIGHLIGHT="SQL"]SELECT [Salesperson Code] AS Verkäufer
    , DATEPART (MONTH, [Posting Date]) AS Monat
    , COUNT (DISTINCT [Order No_]) AS [Aufträge]
    FROM [Sales Shipment Header]
    WHERE DATEPART (YEAR, [Posting Date]) = 2009
    GROUP BY [Salesperson Code]
    , DATEPART (MONTH, [Posting Date])
    ORDER BY [Salesperson Code][/HIGHLIGHT]

    PS: man sollte Leerzeichen in Tabellen-/Feldnamen besser vermeiden
    PPS: Formatierung von SQL in Beiträgen http://entwickler-forum.de/showthread.php?t=42101

    Comment


    • #3
      Sorry, aber außer ein bissl anders formatiert ist da jetzt aber nichts verändert.

      Comment


      • #4
        Originally posted by Baruse View Post
        Sorry, aber außer ein bissl anders formatiert ist da jetzt aber nichts verändert.
        Zeile 6 und 7 sind anders als Deine Zeile 4

        Comment


        • #5
          stimmt - ändert aber leider nichts an der Ausgabe :-(

          Comment


          • #6
            Hallo Baruse,

            welche Version des SQL Servers setzt Du ein? Ab 2005 gibt es die PIVOT Funktion, mit der Du es erschlagen kannst.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Hallo Helper,

              SQL 2008
              Ich werde mir Pivot mal ansehen ob ich damit zurechtkomme.
              Danke für den Hinweis!

              Comment


              • #8
                Ich versteh es anscheinend nicht
                Bin jetzt bei folgendem Code angelangt und finde den Fehler nicht...
                [highlight=sql]
                SELECT [Salesperson Code], 1, 2, 3
                FROM
                (SELECT [Order No_], DATEPART (MONTH, [Posting Date]) AS Monat, [Salesperson Code]
                FROM [Sales Shipment Header]) AS p
                PIVOT
                (
                COUNT ([Order No_])
                FOR DATEPART (MONTH, [Posting Date]) IN (1, 2, 3
                )
                AS pvt
                ORDER BY pvt.[Salesperson Code]
                [/highlight]

                Comment


                • #9
                  Weiter mit dem Ratespiel:

                  [1], [2] ,[3] anstatt 1, 2, 3

                  Comment


                  • #10
                    so hatte ich das auch schon - leider nein
                    er bringt
                    Code:
                    Meldung 102, Ebene 15, Status 1, Zeile 8
                    Falsche Syntax in der Nähe von '('.
                    Außerdem werden nun alle Feldnamen rot unterringelt...

                    Comment


                    • #11
                      Originally posted by Baruse View Post
                      so hatte ich das auch schon - leider nein
                      er bringt
                      Code:
                      Meldung 102, Ebene 15, Status 1, Zeile 8
                      Falsche Syntax in der Nähe von '('.
                      Dann schaut man in Zeile 8 und siehe da am Ende fehlt eine ")"

                      Wenn man bei 2008 den Cursor hinter eine Klammer positioniert, dann zeigt SSMS einem auch, wo die öffnende zugehörige Klammer ist...

                      Comment


                      • #12
                        …stimmt - die fehlte wirklich;
                        kurioserweise bewirkt das Setzen der End-Klammer aber trotzdem nichts.
                        Es kommt exakt die gleiche FM
                        Also manchmal zweifel ich echt an meinem Verstand...

                        Comment


                        • #13
                          Weil in Deiner Zeile 8 noch andere Klammern zuviel sind...
                          (DATEPART (MONTH, [Posting Date]) durch Monat ersetzen)
                          [Highlight="SQL"]SELECT [Salesperson Code], [1], [2], [3]
                          FROM (
                          SELECT [ORDER No_]
                          , DATEPART (MONTH, [Posting Date]) AS Monat
                          , [Salesperson Code]
                          FROM [Sales Shipment Header]
                          ) AS p
                          PIVOT (COUNT ([ORDER No_])
                          FOR P.Monat IN ([1], [2], [3])
                          ) AS pvt
                          ORDER BY pvt.[Salesperson Code][/Highlight]

                          Comment


                          • #14
                            Nee oder?
                            Ich hab geahnt, daß es wieder so eine besch.... Kleinigkeit ist.

                            Es funktioniert!

                            Vielen vielen Dank für die Unterstützung!

                            Comment

                            Working...
                            X