Announcement

Collapse
No announcement yet.

Zwei Datensätze in eine Zeile und zwei Spalten umwandeln

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

  • Zwei Datensätze in eine Zeile und zwei Spalten umwandeln

    Hallo ich habe ein Problem mit einer SQL Abfrage.
    Erstmal die Datenstruktur:

    Tabelle A (id, name)
    1, Peter
    2, Jan
    3, Günter

    Tabelle B (aid, wert)
    1, 600
    1, 601
    1, 300
    2, 600
    2, 300
    3, 601

    Es besteht eine 1:n Beziehung zwischen Tabelle A und B.
    Im Augenblick sieht mein SQL so aus:
    Code:
    SELECT id, name, wert FROM TabelleA, Tabelle B WHERE id = aid AND wert IN (600,601)
    Ausgabe:
    Code:
    1, Peter, 600
    1, Peter, 601
    2, Jan, 600
    3, Günter 601

    In meinen Resultset hätte ich gerne:
    TabelleA.id, TabelleA.name, TabelleB.has600, TabelleB.has601
    Code:
    1, Peter,  true, true
    2, Jan, true, false
    3, Günter, false, true
    Ich würde also gerne aus den zwei Werten 600 und 601, zwei Spalten machen. Das ganze ohne eine Prozedur unter Oracle, obwohl mich auch interessiert, ob das überhaupt in SQL möglich ist.

  • #2
    Hallo,
    Originally posted by borlander View Post
    ...Ich würde also gerne aus den zwei Werten 600 und 601, zwei Spalten machen. Das ganze ohne eine Prozedur unter Oracle, obwohl mich auch interessiert, ob das überhaupt in SQL möglich ist.
    Ja, ist möglich - mit einem (oder besser zwei) Subselect:
    [highlight=sql]
    SELECT id, name,
    (select 1 from TabelleB b WHERE b.aid = a.aid and b.wert = 600) as has600,
    (select 1 from TabelleB b WHERE b.aid = a.aid and b.wert = 601) as has601
    FROM TabelleA a
    [/highlight]

    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


    • #3
      Vielen Dank - Oh man wie einfach. Ich hatte auch fast schon das gleiche.

      Comment

      Working...
      X