[FIXED] Leeren Wert anzeigen, wenn keine Daten in der Tabelle vorhanden sind

Ausgabe

Ich habe eine Tabelle und eine Abfrage, um Daten von Zeile zu Spalte wie folgt auszuwählen:

 id  |  type    | data
-----------------------
  1  |  Name    | John
  1  |  Gender  | Male
  1  |  Code    | 1782
  2  |  Name    | Dave
  2  |  Gender  | Male

Anfrage:

select a.id, a.data as [Name], b.data as [Gender], c.data as [Code]
from table1 a join table1 b on a.id = b.id
              join table1 c on b.id = c.id
where a.type = 'Name' and b.type = 'Gender' and c.type = 'Code'

Ergebnis:

  id |  Name   | Gender | Code  
 ------------------------------
  1  |  John   |  Male  | 1782

In diesem Fall hat die ID-Nummer 2 mit dem Namen „Dave“ keinen „Code“, sodass sie nicht im Ergebnis erscheint. Wie kann ich das Ergebnis trotzdem mit leeren Daten oder NULL in der ‘Code’-Tabelle anzeigen, damit es folgendes Ergebnis hat:

  id |  Name   | Gender | Code  
 ------------------------------
  1  |  John   |  Male  | 1782 
  2  |  Dave   |  Male  |

Lösung

Sie können CASEAusdruck anstelle von JOINs verwenden:

SELECT
  a.id,
  MAX(CASE WHEN a.type = 'Name' THEN a.data ELSE '' END) AS [Name],
  MAX(CASE WHEN a.type = 'Gender' THEN a.data ELSE '' END) AS [Gender],
  MAX(CASE WHEN a.type = 'Code' THEN a.data ELSE '' END) AS [Code]
FROM table1 a
WHERE
    a.type IN('Name', 'Gender', 'Code')
GROUP BY a.id


Beantwortet von –
iSR5


Antwort geprüft von –
David Marino (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like