2016-09-16 4 views
0

이제는 Col A가 0인지 1인지에 따라 부울 값이있는 열 (예 : col A)이 있고 다른 열의 값을 써야합니다 (Col B). 두 개의 다른 열.조건을 기반으로 SQL Server의 열을 이동

예를 들어 Col A가 0이면 열 B의 값을 열 C에 쓰고 열 D는 비워야하고 1이면 열 B의 값을 열 D에 써야합니다 열 C는 공백이어야합니다).

쿼리에 포함 할 수 있습니까? 아니면 쿼리 결과를 파일로 가져 와서 스크립트를 실행해야합니까?

+0

는 무엇을 시도했다과 함께 가능한 시나리오 및 예상 결과와 명확한 예제를 제공하기 위해 일부 샘플 입력과 욕망 출력 –

+0

시도를 추가합니다. –

+0

이것은 인서트입니까? 최신 정보? 고르다? –

답변

1

업데이트 :

UPDATE yourtable SET 
    col_c = CASE 
      WHEN col_a = 0 THEN col_b 
      WHEN col_a = 1 THEN null 
      ELSE col_c END, 
    col_d = CASE 
      WHEN col_a = 0 THEN null 
      WHEN col_a = 1 THEN col_b 
      ELSE col_d END 

col_a는 부울이며가 널 (Null) 값을 포함하면, 그대로 열 값을 둡니다.

1

이것은 간단한 CASE 표현처럼 보인다 : case 문에

SELECT ColA, 
     ColB, 
     CASE WHEN ColA = 0 THEN ColB END ColC, 
     CASE WHEN ColA = 1 THEN ColB END ColD 
FROM dbo.YourTable; 
0

사용 케이스 문 : 모든 가능한 값

SELECT 
    ColA, 
    ColB, 
    CASE ColA 
     WHEN 0 THEN ColB 
     ELSE '' 
    END AS Colc, 
    CASE ColA 
     WHEN 0 THEN '' 
     ELSE ColB 
    END AS ColD 
From TableName 
0

CASE 문.

declare @tab table 
(
colA bit, 
colB char(2) 
) 

insert into @tab values (0, 'xx'); 
insert into @tab values (1, 'yy'); 
insert into @tab values (null, 'zz'); 
insert into @tab values (0, null); 
insert into @tab values (null, null); 

Select colA, colB, 
case when colA = 0 then colB end colC, 
case when colA = 1 then colB end colD 
from @tab 

출력 :

0  xx xx  NULL 
1  yy NULL yy 
NULL zz NULL NULL 
0  NULL NULL NULL 
NULL NULL NULL NULL 
관련 문제