select CASE-Anweisung basierend auf zwei Tabellen
MS SQL Server 2008R2 Management Studio
Ich bin mit einem SELECT
auf zwei Tabellen. Ich werde es vereinfachen zu dem Teil, wo ich Probleme habe. Ich brauche zum ändern der SELECT
Ergebnisse in einem bestimmten format für Daten-import. Meine CASE
- Anweisung funktioniert gut, bis ich zu dem Punkt, dass ich zu base-die WHEN ... THEN...
auf eine andere Spalte der Tabelle
TABLE1
-----------------
name | tag | code
-----------------------
name1 | N | 100
name2 | N | 100
name3 | N | 200
name4 | Y | 100
name5 | N | 400
name6 | N | 700
CODES
-------------------------
code | desc
-------------------------
100 | string1
200 | string2
300 | string2
400 | string2
700 | string2
SELECT name,
Case CODES.desc
when 'string1' then 'String 1'
when 'string2' then 'String 2'
when 'string3' then 'String 3'
when 'string4' then 'String 4'
END as description
FROM TABLE1
join CODES on TABLE1.code = CODES.code
Diese funktioniert einwandfrei. Das problem ist, wenn TABLE1.tag = Y
, dann Beschreibung muss 'Other string'
die nicht in der CODES
Tabelle
Ich habe versucht, hinzufügen:
Case CODES.desc
.....
when TABLE1.tag = Y then CODES.desc 'Other String'
aber es hat nicht funktioniert.
Sie können nest case-Anweisungen. es ist hässlich, aber machbar. im Grunde das äquivalent von verschachtelten
Fall, wenn in "Tabelle1".tag = 'Y', dann 'Andere Saiten' else (case-codes.desc-wenn 'string1', dann 'String 1', wenn ... Ende) Ende - weiß nicht, ob müssen Sie die Klammern, aber zumindest hilft es, zu Lesen
Sie brauchen nicht die Klammern, aber Sie brauchen auch nicht Schaden.
if(if())
Fall, wenn in "Tabelle1".tag = 'Y', dann 'Andere Saiten' else (case-codes.desc-wenn 'string1', dann 'String 1', wenn ... Ende) Ende - weiß nicht, ob müssen Sie die Klammern, aber zumindest hilft es, zu Lesen
Sie brauchen nicht die Klammern, aber Sie brauchen auch nicht Schaden.
InformationsquelleAutor Minott Opdyke | 2015-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du warst nah, aber ich denke, das ist, was Sie suchen. Die Tatsache, dass Sie in unterschiedliche Tabellen, die nicht wirklich in der Materie der FALL, nur der JOIN:
InformationsquelleAutor Steve
Können Sie die etwas robuster
case
syntax und express den Fällen der Bedingungen, statt nur mögliche Werte:InformationsquelleAutor Mureinik
Kann ich nicht kommentieren, ein post noch. Aber warum haben eine code-Tabelle mit einem code Beschreibung wenn Sie zum ändern der Beschreibung überhaupt? Stattdessen sollten Sie nur ändern Sie die aktuelle Beschreibung in dieser Tabelle oder eine Spalte hinzufügen mit der sekundären Beschreibung, die Sie brauchen. Dann die case-Anweisung ist viel weniger Komplex.
Diese Antwort und die von Steve sind ähnlich und dieses format für mich gearbeitet. Dank
InformationsquelleAutor Rabbit