繁体   English   中英

如何根据SQL Server中的条件设置列?

[英]How can I set a column based on a condition in SQL Server?

我有一列需要根据条件设置为true或false,这是否可以作为现有更新的一部分?

例:

UPDATE  i
SET     i.Outstanding = i.Total - @Payments,
    i.Paid = @Payments ,
    i.Closed = (i.Total <= @Payments) -- THIS DOESNT WORK :(
FROM    Invoice i
JOIN    [Transaction] t ON t.Invoice_Id = i.Id
WHERE   i.Id = @InvoiceId

您可以使用CASE语句

UPDATE  i
SET     i.Outstanding = i.Total - @Payments,
    i.Paid = @Payments ,
    i.Closed = CASE WHEN i.Total <= @Payments THEN 1 ELSE 0 END
FROM    Invoice i
JOIN    [Transaction] t ON t.Invoice_Id = i.Id
WHERE   i.Id = @InvoiceId

您可以使用简单的case语句,如下所示

UPDATE  i
SET     i.Outstanding = i.Total - @Payments,
i.Paid = @Payments ,
i.Closed = CASE WHEN i.Total <= @Payments THEN 'Your value' ELSE 'your value' END
FROM    Invoice i
JOIN    [Transaction] t ON t.Invoice_Id = i.Id
WHERE   i.Id = @InvoiceId

尝试这个:

UPDATE  i
SET     i.Outstanding = i.Total - @Payments,
    i.Paid = @Payments ,
    i.Closed = CASE WHEN i.Total <= @Payments THEN 'true' ELSE 'false' END
FROM    Invoice i
JOIN    [Transaction] t ON t.Invoice_Id = i.Id
WHERE   i.Id = @InvoiceId

案例语法:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 

在此处阅读有关CASE的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM