2016-09-16 59 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