Announcement

Collapse
No announcement yet.

Tabelle mit Vorjahreswerten

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

  • Tabelle mit Vorjahreswerten

    Hi Leute,

    ich arbeite zur Zeit mit MS Visual Studio umn Reports zuerstellen. Nun möchte ich einen Report erstellen der folgendermaßen aussehen soll:

    Jahr:
    Monat| TEAM |Vertreter| Sum(Nettobeleg) | Sum(Rohertrag) | Vorjahres Nettobeleg | Vorjahres Rohertrag

    meine Abfrage ohne Vorjahr :
    [highlight=sql]
    SELECT KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr, SUM(View_Belege_R_G.NettoBeleg) AS NettoBeleg,
    SUM(View_Belege_R_G.Rohertrag) AS Rohertrag
    FROM KY_Teams FULL OUTER JOIN View_Belege_R_G ON KY_Teams.VERTRETER = View_Belege_R_G.BEL_232_8
    GROUP BY KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr
    HAVING (View_Belege_R_G.Jahr = @JAHR)
    [/highlight]

    funktioniert ohne Probleme. Ich bekomme es aber leider nicht hin die beiden Vorjahreswerte mit einzubinden. Habe es schon über UNION ALL probiert bekomme aber dann ja nur zeilenweise die Jahre ausgegeben.

    Vlt könnt ihr mir ja helfen. VIELEN DANK SCHONMAL IM VORRAUS!!!!

    mfg Kelloggz
    Zuletzt editiert von kelloggz; 21.09.2012, 13:55.

  • #2
    Eigentlich brauchst Du doch nur das gleiche SQL mit Jahr-1 zu nehmen, über Monat zu Joinen und fertig, oder?
    Gruß, defo

    Comment


    • #3
      Hi,

      versuchs mal mit einem Self-Join.

      Gruß

      MArtin

      war zu langsam;-)
      Zuletzt editiert von Martin R.; 03.09.2012, 16:07. Reason: zu spät

      Comment


      • #4
        Originally posted by Martin R. View Post
        war zu langsam;-)
        Wahrscheinlich eher zu spät als zu langsam!
        Gruß, defo

        Comment


        • #5
          AHh ok, vielen Dank schon einmal für die schnellen Antworten. Bin noch recht neu in der Sache und versuchs nach dem try and error Prinzip .
          [highlight=sql]
          SELECT KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr, SUM(View_Belege_R_G.NettoBeleg) AS NettoBeleg,
          SUM(View_Belege_R_G.Rohertrag) AS Rohertrag
          FROM KY_Teams FULL OUTER JOIN
          View_Belege_R_G ON KY_Teams.VERTRETER = View_Belege_R_G.BEL_232_8
          GROUP BY KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr
          HAVING (View_Belege_R_G.Jahr = @JAHR)
          [/highlight]
          DAs wäre die "1. Tabelle"
          [highlight=sql]
          SELECT KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr, SUM(View_Belege_R_G.NettoBeleg) AS NettoBeleg,
          SUM(View_Belege_R_G.Rohertrag) AS Rohertrag
          FROM KY_Teams FULL OUTER JOIN
          View_Belege_R_G ON KY_Teams.VERTRETER = View_Belege_R_G.BEL_232_8
          GROUP BY KY_Teams.TEAM, KY_Teams.VERTRETER, KY_Teams.NAME, View_Belege_R_G.Monat, View_Belege_R_G.Jahr
          HAVING (View_Belege_R_G.Jahr = @JAHR-1)
          [/highlight]
          Und das die 2.

          Wie kann ich in diesem Fall den Selfjoin durchführen??

          SELECT ( SELECT (TEIL mit @ JAHR)) AS AktJahr, (SELECT (TEIL mit @ JAHR-1)) AS Vorjahr
          FROM ???
          WHERE ??

          Sry, dass ich im Moment da ein wenig auf dem Schlauch stehe
          Zuletzt editiert von kelloggz; 21.09.2012, 13:56.

          Comment


          • #6
            Hallo kelloggz,

            da du jeden einzelnen Datensatz auf's Jahr filtern kannst, ist es wesentlich schneller dies schon in der WHERE-Bedingung abzufragen.
            Denn bei der Having werden erst allen möglichen Gruppen gebildet und dann das gesuchte Jahr behalten.
            Deshalb sind Having-Bedingungen nur zu Aggregation (Summe, Durchschnitt, Min,...) sinnvoll.

            Welche Datenbank nutzt du?
            Falls MS SQL-Server geht's so:

            Code:
            SELECT
            	 KY_Teams.TEAM
            	,KY_Teams.VERTRETER
            	,KY_Teams.NAME
            	,View_Belege_R_G.Monat
            	,View_Belege_R_G.Jahr
            	,NettoBeleg 		= SUM( CASE WHEN View_Belege_R_G.Jahr = @JAHR   THEN View_Belege_R_G.NettoBeleg ELSE 0 END)
            	,Rohertrag 		= SUM( CASE WHEN View_Belege_R_G.Jahr = @JAHR   THEN View_Belege_R_G.Rohertrag  ELSE 0 END)
            	,VorJahr_NettoBeleg 	= SUM( CASE WHEN View_Belege_R_G.Jahr = @JAHR-1 THEN View_Belege_R_G.NettoBeleg ELSE 0 END)
            	,VorJahr_Rohertrag 	= SUM( CASE WHEN View_Belege_R_G.Jahr = @JAHR-1 THEN View_Belege_R_G.Rohertrag  ELSE 0 END)
            FROM KY_Teams 
            FULL JOIN View_Belege_R_G 
            	ON KY_Teams.VERTRETER = View_Belege_R_G.BEL_232_8
            WHERE View_Belege_R_G.Jahr IN (@JAHR, @JAHR-1)
            GROUP BY
            	 KY_Teams.TEAM
            	,KY_Teams.VERTRETER
            	,KY_Teams.NAME
            	,View_Belege_R_G.Monat
            ORDER BY
            	 KY_Teams.TEAM
            	,KY_Teams.VERTRETER
            	,KY_Teams.NAME
            	,View_Belege_R_G.Monat
            Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

            Comment


            • #7
              Hallo,
              bitte die Formatierung für SQL benutzen! 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


              • #8
                Hallo,
                bitte ein entsprechendes Icon für SQL-Formatierung erstellen! Für PHP und HTML geht es doch auch.

                Gruß knoxyz
                Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

                Comment


                • #9
                  So war nun ein bisschen länger im Urlaub und mit Uni Klausuren beschäftigt, dass ich heute erst wieder weitermachen konnte.
                  Erstmal vielen Dank knoxyz, mit 1-2 kleinen Änderungen hat es mit deinem Vorschlag super funktioniert.

                  Werde auch das nächste mal auf die Formatierung achten . Schande über mich.

                  Thema ist damit gelöst. Vielen Dank

                  Comment

                  Working...
                  X