2014-07-08 2 views
1

아래의 논리를 SQL 쿼리로 변환하고 싶습니다. ELSE 문을 사용할 때 CASE WHEN THEN ELEN 문을 사용할 수 있다는 것을 알고 있지만 어떻게 입력 할 수 있는지 잘 모르겠습니다. 그것은 함께 쿼리에. 도와주세요.여러 조건을 사용하여 SQL CASE STATEMENT를 구조화하는 방법

  1. 여기서 AG_AGENTS.SALES_AREA_DESC = Dom. - NAT
  2. 경우 PX_PAXWEB.COUNTRY = AUT 다음 PX_PAXWEB.POSTCODE
  3. PX_PAXWEB.COUNTRY < 경우> 다음 AUT vwPxPaxweb.SALES_AREA
  4. 포인트 (2) 및/또는 (3) 그런 다음 사용
  5. AG_AGENTS.SALES_AREA_DESC 널이면 여기서 AG_AGENTS.SALES_AREA_DESC = Int. - 점 5가 null의 경우 인바운드, 다음 vwPxPaxweb.SALES_AREA
  6. 후 사용 AG_AGENTS.SALES_AREA_DESC

    The new field can be called as SALES_AREA_DESC_2 
    
+1

버전을 게시하는 것이 좋습니다. – demas

+0

where 문 다음에 2-4가 있지만 선택 항목으로 들어가면 오른쪽으로 표시됩니까? – paqogomez

+1

테이블 스키마 및 가능한 경우 일부 데이터를 게시하십시오. – Edper

답변

1

일반적인 논리는 : 귀하의 경우

select 
    CASE WHEN test1 = 'a' THEN 1 
     WHEN test1 = 'b' THEN 2 
     WHEN (test1 = 'c') AND (test2 is null) THEN 3 
     ELSE 0 END as myfield 
from mytable 

, 내가 이해하는 경우 검색어가 올바르게 입력되었습니다.

CASE WHEN (AG_AGENTS.SALES_AREA_DESC = Dom. - NAT) 
     AND (ISNULL(PX_PAXWEB.COUNTRY,'') = AUT) THEN PX_PAXWEB.POSTCODE 
    WHEN (AG_AGENTS.SALES_AREA_DESC = Dom. - NAT) 
     AND (ISNULL(PX_PAXWEB.COUNTRY,'') <> AUT) THEN vwPxPaxweb.SALES_AREA 
    WHEN (AG_AGENTS.SALES_AREA_DESC = Dom. - NAT) 
      AND (PX_PAXWEB.COUNTRY is null) THEN AG_AGENTS.SALES_AREA_DESC 
    WHEN (AG_AGENTS.SALES_AREA_DESC = Int. – Inbound) 
     THEN vwPxPaxweb.SALES_AREA 
    WHEN (AG_AGENTS.SALES_AREA_DESC = Int. – Inbound) 
     THEN AG_AGENTS.SALES_AREA_DESC 
    WHEN (AG_AGENTS.SALES_AREA_DESC is null) 
      OR (Int. is null) OR (Inbound is null) 
     THEN AG_AGENTS.SALES_AREA_DESC 
    ELSE AG_AGENTS.SALES_AREA_DESC -- or some other exit value 

END as SALES_AREA_DESC_2

참고 : 몇 가지 질문이 있으므로 가정을해야했습니다. - "Dom.", "NAT"등이 필드 (비트 홀수 점 ...) - 어떤 필드가 NULL 일 수 있는지 확실하지 않습니다 ("포인트 2 및/또는 3이 null 인 경우"등). 그래서 모든 사례를 케이스의 마지막 분기로 선택했습니다. 나머지는 알아낼 수 있습니다.

관련 문제