2016-09-16 60 views
0

我有一個列(說col A),它具有布爾值,現在取決於列A是否有0或1,我必須寫另一列的值(比如列B)到兩個不同的列。 (例如,如果Col A具有0,則列B的值必須寫在列C中,而列D必須爲空,如果它具有1,則列B的值必須寫入列D中而C欄必須是空白的)。根據條件在SQL Server中移動列

它甚至可以包含在查詢中嗎? 或者我必須在文件中導入查詢結果並在其上運行腳本?

+0

添加一些樣品的輸入和輸出的渴望嘗試 –

+0

提供與可能出現的情況和預期成果,你已經嘗試過什麼沿着清晰的例子。 –

+0

所以這是一個插入?更新?選擇? –

回答

1

更新與case語句:

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是一個布爾值,它可能包含空值,然後離開列值不變。

1

這似乎是一個簡單的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 

OUTPUT:

0  xx xx  NULL 
1  yy NULL yy 
NULL zz NULL NULL 
0  NULL NULL NULL 
NULL NULL NULL NULL