我有一個列(說col A),它具有布爾值,現在取決於列A是否有0或1,我必須寫另一列的值(比如列B)到兩個不同的列。 (例如,如果Col A具有0,則列B的值必須寫在列C中,而列D必須爲空,如果它具有1,則列B的值必須寫入列D中而C欄必須是空白的)。根據條件在SQL Server中移動列
它甚至可以包含在查詢中嗎? 或者我必須在文件中導入查詢結果並在其上運行腳本?
我有一個列(說col A),它具有布爾值,現在取決於列A是否有0或1,我必須寫另一列的值(比如列B)到兩個不同的列。 (例如,如果Col A具有0,則列B的值必須寫在列C中,而列D必須爲空,如果它具有1,則列B的值必須寫入列D中而C欄必須是空白的)。根據條件在SQL Server中移動列
它甚至可以包含在查詢中嗎? 或者我必須在文件中導入查詢結果並在其上運行腳本?
更新與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是一個布爾值,它可能包含空值,然後離開列值不變。
這似乎是一個簡單的CASE
表達:
SELECT ColA,
ColB,
CASE WHEN ColA = 0 THEN ColB END ColC,
CASE WHEN ColA = 1 THEN ColB END ColD
FROM dbo.YourTable;
使用案例聲明:
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
與所有可能的值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
添加一些樣品的輸入和輸出的渴望嘗試 –
提供與可能出現的情況和預期成果,你已經嘗試過什麼沿着清晰的例子。 –
所以這是一個插入?更新?選擇? –