2010-06-15 14 views
10

Zgodnie z poniższym opisem, muszę sformatować instrukcję CASE...END w serwerze SQL, pomóż mi sformułować złożone oświadczenie CASE...END, aby spełnić następujące warunki.Łączenie wielu warunku w instrukcji pojedynczego przypadku w serwerze Sql

if PAT_ENT.SCR_DT is not null and PAT_ENTRY.ELIGIBILITY is null then display display 'Favor' 
if PAT_ENT.SCR_DT is not null and PAT_ENTRY.EL is equal to No, display 'Error' 
if PAT_ENTRY.EL is Yes and DS.DES is equal to null or OFF, display 'Active' 
if DS.DES is equal to N, display 'Early Term' 
if DS.DES is equal to Y, display 'Complete' 

Z góry dziękuję.

Odpowiedz

32

można postawić warunek po klauzuli WHEN, tak:

SELECT 
    CASE 
    WHEN PAT_ENT.SCR_DT is not null and PAT_ENTRY.ELIGIBILITY is null THEN 'Favor' 
    WHEN PAT_ENT.SCR_DT is not null and PAT_ENTRY.EL = 'No' THEN 'Error' 
    WHEN PAT_ENTRY.EL = 'Yes' and ISNULL(DS.DES, 'OFF') = 'OFF' THEN 'Active' 
    WHEN DS.DES = 'N' THEN 'Early Term' 
    WHEN DS.DES = 'Y' THEN 'Complete' 
    END 
FROM 
    .... 

Oczywiście, argument może być wykonana, że ​​skomplikowane przepisy jak ten należał w warstwie logiki biznesowej, a nie w procedurze przechowywanej w baza danych ...

+0

Mnóstwo dzięki :) Miłego dnia – swetha

0
select ROUND(CASE 

WHEN CONVERT(float, REPLACE(isnull(value1,''),',',''))='' AND CONVERT(float, REPLACE(isnull(value2,''),',',''))='' then CONVERT(float, REPLACE(isnull(value3,''),',','')) 

WHEN CONVERT(float, REPLACE(isnull(value1,''),',',''))='' AND CONVERT(float, REPLACE(isnull(value2,''),',',''))!='' then CONVERT(float, REPLACE(isnull(value3,''),',','')) 

WHEN CONVERT(float, REPLACE(isnull(value1,''),',',''))!='' AND CONVERT(float, REPLACE(isnull(value2,''),',',''))='' then CONVERT(float, REPLACE(isnull(value3,''),',','')) 

else CONVERT(float, REPLACE(isnull(value1,''),',','')) end,0) from Tablename where ID="123" 
Powiązane problemy