2010-06-15 3 views
10

다음 설명에 따르면 다음 조건을 충족시키기 위해 CASE...END 문을 복잡한 프레임으로 만들 수 있도록 SQL 서버에서 CASE...END 문을 프레임해야합니다.SQL Server의 단일 사례 문에서 여러 조건 결합

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' 

미리 감사드립니다.

당신의 WHEN 절 후 조건을 넣어과 같이 할 수

답변

32

:

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

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" 
관련 문제