SQL Kreuztabellenabfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Kreuztabellenabfrage

    Hallo zusammen,

    ich brauche eure Fachkundige Hilfe.
    Ich habe schon einiges probiert, leider komme ich mit meiner Kreuztabelle in SQL nicht weiter. Ich habe untenstehende Tabelle.

    In der Kreuztabelle soll in der linken Spalte die Namen stehen und in der oberen Zeile der Monat.

    Jetzt wird es kompliziert:

    Jetzt sollen die Kunden ID den Namen und den Monat zugeordnet werden.

    Bedingung: doppelte KundenID von einem Tag dürfen nur einmal gezählt werden.

    Ich hoffe ich habe mich verständlich ausgedrück.
    Sollte der Arbeitsaufwand für eure Hilfe zu groß sein,
    vergesst einfach meine Anfrage.



    KundenID, Name, Artikel , Datum_ID, Rech_Datum
    565898 Gwen Halsband Juni 04.06.2005
    565898 Gwen Knochen Juni 04.06.2005
    565898 Gwen Futter Juni 04.06.2005
    225654 Gwen Leine Juni 26.06.2005
    155654 Benny Futter Juni 08.06.2005
    256545 Harold Leine Juni 10.06.2005
    155545 Harold Futter Juni 10.06.2005
    655484 Benny Napf Juli 06.07.2005
    655484 Benny Futter Juli 06.07.2005
    655698 Diane Leine Juli 18.07.2005

    Vielen Dank schon mal für eure Hilfe.

    MfG

    Slim

  • #2
    schonmal was von Count(Distinct spalte) gehört?

    edit: ich glaub du brauchst eher n group by wenn ich mich mal nicht täusche. Also group by kunden id, name, monat, datum << o.ä.
    Zuletzt geändert von Benny-one; 24.03.2006, 14:16.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Hallo Slim
      Sehe ich das richtig: 12 Spalten von Januar bis Dezember?

      Eine temporäre Tabelle, jeden Monat separat einfügen und danach gruppieren.

      Kommentar


      • #4
        [SQL allgemein] Frage noch offen

        Hallo zusammen,

        Ich bin Anfänger und habe hier noch mal eine neue Tabelle gemacht.

        Produkt KuNr Date
        A 123 P1
        A 123 P1
        A 222 P1
        A 232 P1
        A 252 P2
        A 334 P2

        Ergebniss:
        P1 P2
        A 3 2

        usw.

        Die Tabellen sind ja soweit bekannt.
        Das was ich brauche, ist die Anzahl der Kundennummern. Doppelte
        Kundennummern in einem Monat sollen aber nur einmal gezählt werden.
        Da es jede Menge Kunden gibt müßte die Abfrage für die Kreuztabelle
        Dynamisch sein.
        Ich hoffe es ist nicht zu viel Arbeit mir eine Abfrage zu schreiben.
        Ich wäre euch sehr Dankbar für die Hilfe.

        Mit freundlichen Grüßen

        Slim

        Kommentar


        • #5
          Hallo Slim
          Vergiss jetzt 'mal Excel und Kreuztabellen für einen Moment.
          Mit MySQL die Monate in Spalten anordnen hat's in sich.
          Wenn Du nach Produkt und Datum gruppierst und den DISTINCT von Benny-one nimmst, siehts so aus:

          Produkt Anzahl Date
          A 3 P1
          A 2 P2


          [edit: und Datum...]
          Zuletzt geändert von fuser; 27.03.2006, 18:07.

          Kommentar


          • #6
            Hallo fuser,

            danke für Deine Info.
            Destinct ist mir mitlerweile bekannt.
            Meine normale Auswertung arbeitet nach dem Muster wie Du es beschrieben hast. Es wäre für mich um ein vielfaches einfacher wenn diese Kreuztabelle funktionieren würde.

            Ich habe da etwas gefunden was leider nicht so ganz funktioniert wie ich es brauche.

            Ich habe zwei Auswertungen mit unterschiedlichen Ergebnissen gemacht.
            Die erste ist mit 'SUM' . Dort werden die Zahlen der entsprechenden Zeilen summiert. Das ist ja soweit ok.

            Wenn ich aber 'COUNT' hinschreibe bekomme ich nur in der ersten Spalte die ANZAHL der Produkte geschrieben und das setzt sich durchlaufend in allen Feldern fort.

            Was muß geändert werden damit ich in den entsprechenden Spalten und Zeilen die richtige Anzahl stehen habe?

            Dieses ist mein letzter Versuch.

            Danke für eure Hilfe.

            Slim
            ____________________________________________________________
            SELECT Produkt,

            sum(CASE[Verkäufer] WHEN 'Maier' Then Umsatz ELSE 0 END) As 'Maier',
            sum(CASE[Verkäufer] WHEN 'Müller' Then Umsatz ELSE 0 END) As 'Müller',
            sum(CASE[Verkäufer] WHEN 'Schulze' Then Umsatz ELSE 0 END) As 'Schulze'

            From [verkäufe] Group By Produkt

            Meier Müller Schulze
            Butter 17 2 0
            Honig 19 0 2
            Milch 12 8 37


            ____________________________________________________________

            SELECT Produkt,

            count(CASE[Verkäufer] WHEN 'Maier' Then Umsatz ELSE 0 END) As 'Maier',
            count(CASE[Verkäufer] WHEN 'Müller' Then Umsatz ELSE 0 END) As 'Müller',
            count(CASE[Verkäufer] WHEN 'Schulze' Then Umsatz ELSE 0 END)As 'Schulze'


            From [verkäufe] Group By Produkt

            Meier Müller Schulze
            Butter 2 2 2
            Honig 2 2 2
            Milch 3 3 3

            Kommentar


            • #7
              Hallo Slim
              Zum Thema "Kreuztabelle:"
              http://www.php-resource.de/tutorials/read/44/16/
              http://www.php-resource.de/tutorials/read/44/17/

              Kommentar

              Lädt...
              X