flo: SQL Abfrage

Hallo Forumler!
Habe irgendwie einen Knoten! Vielleicht habt Ihr einen Tip.
Habe eine Tabelle in einer ACCESS-DB die folgendermaßen aussieht:

CustomerID   Day   Scenario ID
C10000       Day1  SP001
C10000       Day1  SP002
C10000       Day1  SP003
C20000       Day2  SP001

Ich will jetzt aber eine Abfrage erstellen, die mir alles
so darstellt:

Customer ID   Day1   Day2
C10000        SP001  -
C10000        SP002  -
C10000        SP003  -
C20000        -      SP001

Danke schon mal für Tips bzw. Hilfe.

Grüße aus München

Flo

  1. Hi,

    Ich will jetzt aber eine Abfrage erstellen, die mir alles
    so darstellt:

    wenn Du (bei der Erstellung des Statements) _weißt_, dass es genau "Day1" und "Day2" gibt, ist das möglich. Wenn nicht, dann nicht - zumindest nicht auf auch nur annhähernd sinnvollem Wege.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah !
      Ja das ist gesichert mit Day1, Day2, Day...
      Grüße
      Flo

      1. Moin!

        Ja das ist gesichert mit Day1, Day2, Day...

        Das ist doch genau das Problem! Wenn du vor der Abfrage genau weißt, wieviele "Days" es gibt, kann es eine Lösung geben. Wenn nicht - und dein "Day..." deutet darauf hin - dann nicht.

        - Sven Rautenberg

        --
        "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
    2. helau,

      Wenn nicht, dann nicht - zumindest nicht auf auch nur annhähernd sinnvollem Wege.

      spontan würde mir ein left self join in den sinn kommen, ohne genauer darüber nachzudenken.

      ein käfig voller Narren
      Ilja

  2. Hallo Flo,

    Access bietet Dir hierfür "Kreuztabellen"-Abfragen.
    Bei Abfragen -> Neu -> Kreuztabellenabfrage.

    Kritisch wird es Berichte und Formulare zu erstellen, aber auch
    hierfür gibts Lösungen, die sind allerdings etwas komplexer
    einfach mal nachgooglen (Problem: dynamische Anzahl an Spalten-
    überschriften in Access)

    Gruß
    annA

  3. yo,

    hier ist der jecke aus preussen noch mal. versuch doch mal.je nachdem ob die gleiche customerid und scenarioid nur einmal vorkommt oder auch zweimal.

    nur einmal:

    SELECT customerid, if(Day='Day1', scenarioid, '-') AS Day1, if(Day='Day2',scenarioid,'-') AS Day1
    FROM tabelle

    zweimal:

    SELECT t1.customerid, if(t1.Day='Day1', t1.scenarioid, '-') AS Day1, if(t1.Day='Day2',t2.scenarioid,'-') AS Day1
    FROM tabelle AS t1
    LEFT JOIN tabelle AS t2
    ON (t1.customerid = t2.customerid AND t1.scenarioid=t2.scenarioid)

    Ilja