在“IS NULL”条件下更改列状态

问题描述 投票:0回答:2

我有一张桌子tblBooking

bkID bkCusID bkTotalAmount
---- ------- -------------
17   11      NULL
18   11      NULL
19   11      NULL

如果bkTotalAmount为null,那么bkStatus应该是0,如果不是它应该1

bkID bkCusID bkStatus
---- ------- -------------
17   11      
18   11      
19   11

我已经使用COALESCE将状态更改为0但不知道,如果1不为null,如何将状态更改为bkTotalAmount

SELECT bkID, bkCusID, COALESCE(bkTotalAmount, 0) AS bkStatus
FROM tblBooking
WHERE bkCusID = 11 AND bkTotalAmount IS NULL
sql sql-server coalesce isnull
2个回答
1
投票

只需使用case

SELECT bkID, bkCusID,
       (CASE WHEN bkTotalAmount IS NULL THEN 0 ELSE 1 END) AS bkStatus
FROM tblBooking
WHERE bkCusID = 11 ;

如果您希望将其存储在表本身中,则可以使用更新。相反,我建议添加一个计算列:

alter table tblBooking add bkStatus as (CASE WHEN bkTotalAmount IS NULL THEN 0 ELSE 1 END);

1
投票

使用ISNULL函数代替COALESCE

SELECT 
bkID,
bkCusID,
ISNULL(bkTotalAmount+1, 0) AS bkStatus 
FROM tblBooking WHERE bkCusID=11 
© www.soinside.com 2019 - 2024. All rights reserved.