2016-08-09 3 views
-5

질문이 2 개 있습니다.여러 열의 사례문

(1) 열이 colA, colB, ColC, colD입니다. colC의 값을 변경해야합니다. 조건 다음

을 바탕으로 만약 다른 COLB = 1 다음 COLC = 'Tom1' 경우 콜드 = '제프'의 처음 3 개 문자 다음 COLC = 'TOM2' null를.

(2) 정수 열에 '12 : 00pm '기본값을 어떻게 추가합니까?

내가 여기 도움이 필요하면 도와주세요.

미리 감사드립니다.

+0

이 mysql 또는 SQL Server입니까? 둘 다 태그를 추가했습니다. –

+0

'colb = 1이고 colC ='Tom1 '일 때'왼쪽 '(colid, 3) ='Jef '이고 colC ='Tom2 'THEN' 'ELSE NULL END' – Lamak

+0

이것은 SQL 서버 – John

답변

0

원하는 논리가 완료되지 않았습니다. 당신은 실제로 현재 colA 값을 유지하기 위해 값을 원합니까? 당신은 colb = 1, colC = 'Tom1'이라고 쓰고 있습니다 ... 나는 다음과 같다고 가정 할 것입니다. 그냥 다음 콜라 값을 유지하려면

CASE 
    WHEN colB = 1 and colC = 'Tom1' THEN ???? 
    WHEN LEFT(colD) = 'Jef' AND colC = 'Tom2' THEN ???? 
    ELSE NULL 
END 

당신은 실제로 당신이 완전히 당신이 생산시 COLB 차가운의 값이 가정에 OR

CASE 
    WHEN (colB = 1 and colC = 'Tom1') 
     OR (LEFT(colD) = 'Jef' AND colC = 'Tom2') THEN colA 
    ELSE NULL 
END 
+0

나는 지금 질문을 업데이트했다. 그것을 확인하십시오 – John

+0

질문은 동일하게 보입니다 – Matt

+0

어떻게 '12 : 00pm '의 기본값을 정수 열에 추가합니까 ?? – John

0

와 yoru에게 case 문을 결합 할 수 있습니다 COLC, 당신은 같은 것을 사용할 수 있습니다

select 
    colA 
    ,colB 
    ,case 
     when colB = 1 then 'Tom1' 
     when left(colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,colD 

것은 COLB 및 감기는 열을 계산하고 당신은 당신이 하위 쿼리 및 calcu 사람들을 할 수있는, 계산을 반복하지 않으려면 외부 쿼리에서 늦은 colC

select 
    t1.colA 
    ,t1.colB 
    ,case 
     when t1.colB = 1 then 'Tom1' 
     when left(t1.colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,t1.colD 
from 
(
    select 
     colA 
     ,case when someCondition then 1 else 2 end as colB 
     ,(select top 1 name from someTable) as colD 
    from 
     ... -- whatever your source tables are 
) t1