我有一个列(说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
添加一些样品的输入和输出的渴望尝试 –
提供与可能出现的情况和预期成果,你已经尝试过什么沿着清晰的例子。 –
所以这是一个插入?更新?选择? –