SQL 쿼리 도움말-CASE STATEMENT는 2 개 이상의 행을 반환합니다.이 중 하나의 값을 선택합니다.

user1100221

이 하위 쿼리는 큰 쿼리의 일부입니다.

    ...
    CASE WHEN tx.call_id IS NULL THEN 0 ELSE 1 END AS 'Transfer', 
    CASE WHEN AT.VALUE IS NULL THEN 
       (
        SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00' + 
           calls.memberid 
        UNION 
        SELECT top 1 'DGU' AS product_type FROM [dbo].[stg_call_routing_data] WHERE alt_id = 
        calls.memberid
       ) 
   ELSE AT.VALUE END AS product_type 
   FROM dbo.cust_call_data AS calls 
    ... 

UNION이있는 두 번째 사례 진술에 유의하십시오.

SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00' + 
               calls.memberid 

첫 번째 선택은 product_type을 "DGU", "MYW"또는 "HUA" 중 하나로 반환 할 수 있습니다 .

우리가 원하는 것은이 첫 번째 선택이 HUA반환 한 다음이를 사용하는 것입니다 (우선 순위가 있음). 반환 값이 경우 MYW 후 사용 DGU 다른 사용 DGU을 .

나는 UNION이 여기서 전혀 도움이되지 않는다고 생각하며 아래 코드로 변경해야합니다 (하지만 값이 MYW 일 때 어떻게 처리합니까?)

...
    CASE WHEN tx.call_id IS NULL THEN 0 ELSE 1 END AS 'Transfer', 
    CASE WHEN AT.VALUE IS NULL THEN 
        SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00' + 
           calls.memberid 
         
   ELSE AT.VALUE END AS product_type 
   FROM dbo.cust_call_data AS calls 
    ... 
파비오

아래 진술을 바탕으로 :

첫 번째 선택은 product_type을 "DGU", "MYW"또는 "HUA"중 하나로 반환 할 수 있습니다.

우리가 원하는 것은이 첫 번째 선택이 HUA를 반환 한 다음이를 사용하는 것입니다 (우선 순위가 있음). 반환 된 값이 MYW이면 DGU를 사용하고 DGU를 사용합니다.

HUA제품 유형이 HUA다른 모든 경우에 반품을 원합니다.DGU

CASE WHEN AT.VALUE IS NULL THEN (
    SELECT TOP 1 IIF(product_type = 'HUA', 'HUA', 'DGU')
    FROM [mci].[dbo].[f3_leads_file] 
    WHERE alt_id = '00' + calls.memberid 
 )

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관