2010-06-15 43 views
10

根據以下描述,我必須在SQL server中構建一條CASE...END語句,幫助我構造複雜的CASE...END語句以滿足以下條件。在Sql Server中結合單個case語句中的多個條件

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' 

在此先感謝。

回答

32

你可以把條件WHEN條款後,像這樣:

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 
    .... 

當然,爭論可以做出這樣複雜的規則屬於您的商業邏輯層,而不是在存儲過程數據庫...

+0

謝謝:)有一個愉快的一天 – swetha 2010-06-15 07:13:50

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"