SQL:使用大小写何时更改列值

时间:2017-01-26 13:58:27

标签: sql sql-server tsql

我正在创建新列,但特别是我想说一个列的值是否等于某个值,然后更改相应的列。例如:

SELECT
     Col1 as c1
    ,Col2 as c2
    ,CASE CAST([COB] as varchar(50))
        WHEN 'Engineering' then set c1 = 1
        ELSE 0
    END AS [Class of Business]
FROM
     ....

但我不能让它工作,例如,如果[COB]列中的条目是'工程',那么我希望它将列c1设置(在同一行上)为0,否则只需填写列c1为0的

4 个答案:

答案 0 :(得分:1)

如果您只想查询表格,则可以在COB状态的基础上返回1或0,而无需重新分配 SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0) bottles, B.stock,B.stock_date FROM tbl_brands A left OUTER JOIN tbl_counter_stock AS B on A.BRND_ID=B.BRND_ID AND B.STOCK IN('O','C') AND B.STOCK_DATE='2017-01-18' 新值。

试试这个:

c1

答案 1 :(得分:1)

这不是<Button Content="Test command" xmlns:local="clr-namespace:WpfApplication1" local:CombinedMouseAndKeyCommandBehavior.Command="{Binding RemoveCommand}" local:CombinedMouseAndKeyCommandBehavior.Key="F"> <Button.InputBindings> <MouseBinding Gesture="LeftClick" Command="{Binding AddCommand }" /> </Button.InputBindings> </Button> 的工作方式。你正在寻找这样的东西:

SELECT

答案 2 :(得分:1)

因此,当COB =工程时,您希望c1为1,否则只是C1的当前值。 如果那是cae那么......

SELECT
    CASE CAST([COB] as varchar(50))
        WHEN 'Engineering' then 1
        ELSE c1
    END AS c1
    ,Col2 as c2
FROM
..

答案 3 :(得分:0)

你为什么要做cast()

SELECT Col1 as c1,
       Col2 as c2,
       (CASE WHEN [COB] = 'Engineering' THEN 1 ELSE 0 END) as [Class of Business]
FROM . . .;

可以使用搜索到的CASE来实现此目的。但通过一次比较,我认为上述内容更容易阅读。