2017-06-20 3 views
0

Ich habe mehrere hart codierte Fall Aussagen (case when ID in ('1','2', etc) then X). Gibt es eine Möglichkeit, es als table zu zeigen, wo die ID-Werte 1, 2 der Beschreibung X entsprechen?Case-Anweisung Werte zu Tabelle

Und dann eine Referenztabelle erstellen.

Sonst muss ich manuell diese Werte in diese Tabelle einfügen. Letztendlich möchte ich einen Join mit dieser Tabelle in meiner Abfrage anstelle der case-Anweisung verwenden.

+0

Verwenden Sie einen [Tabellenwertkonstruktor] (https://docs.microsoft.com/en-us/sql/t-sql/queries/table-value-constructor-transact-sql). –

+0

Ja, Sie können Tabelle mit Spalten ID, Beschreibung und Use Case-Anweisung erstellen, um Zeilen in die zweite Spalte einzufügen. –

+0

Mein Gedanke ist, ob es eine "intelligente" Möglichkeit gibt, das zu erreichen. Wenn ich alle Id von Hand hinzufügen oder viel schreiben/ändern muss, dann gibt es keinen Grund, das Handbuch zu vermeiden, alle Werte einzufügen – Proffesore

Antwort

0

Verwenden Sie diese Art und Weise, wenn es Ihnen passt

create table #temp 
(id int, description Varchar(55)) 
insert into #temp (id) 
values (1); 
insert into #temp (id) 
values (2); 
insert into #temp (id) 
values (1); 
insert into #temp (id) 
values (3); 

update #temp 
set description = 'first' where id in (1,2) 
; 
update #temp 
set description = 'Second' where id = 3 

select * from #temp 

drop table #temp 
1

Sie können eine Referenztabelle in einer Abfrage erstellen, wie:

with ref as (
     select v.id, v.val 
     from (values ('1', 'x'), 
        ('2', 'x'), 
        . . . 
      ) v(id, val) 
    ) 
select . . . 
from t join 
    ref 
    on t.id = ref.id; 

Sie auch die Werte in einer temporären Tabelle, eine globale temporäre speichern Tabelle oder eine permanente Tabelle.

0

Normalerweise ist eine schnelle Lösung, Excel zu verwenden, um den Fall zu generieren, wenn Anweisungen einige intelligente Formeln verwenden. Ich habe das für einige große Codes benutzt.

Verwandte Themen