Tsql 检查字段是否为null或空,然后插入sql server 2008

Tsql 检查字段是否为null或空,然后插入sql server 2008,tsql,Tsql,sql有点生疏了 我需要在临时表中插入一个字段“@Amount”。如果表a中的@Amount为null或0,请从表B中获取它 这是我正在做的一个简化示例。在插入#CustomerTable时,必须在select语句中执行此操作 我需要一个案例来表达我的观点吗 DECLARE @Amount DECIMAL(18,4) SELECT @Amount=Amount FROM TableA INSERT #CustomerTable(id,Name,Amount) SELECT 1,Custom

sql有点生疏了

我需要在临时表中插入一个字段“@Amount”。如果表a中的@Amount为null或0,请从表B中获取它

这是我正在做的一个简化示例。在插入#CustomerTable时,必须在select语句中执行此操作 我需要一个案例来表达我的观点吗

DECLARE @Amount DECIMAL(18,4) 

SELECT @Amount=Amount
FROM TableA

INSERT #CustomerTable(id,Name,Amount)
SELECT 1,CustomerName,--if Amount is null or 0 get it from TableB else Get it from Table A.
FROM TableB

非常接近@dcp answer,而是在case语句中使用子查询

INSERT @CustomTable
(
    id,
    Name,
    Amount
)
SELECT 
    1, 
    CustomerName,
    CASE 
        WHEN ISNULL(TableB.Amount,0) > 0 THEN TableB.Amount
        ELSE (SELECT TableA.Amount FROM TableA WHERE 1 = 1) --Replace logic to get value from TableA
    END AS Amount
FROM TableB

非常接近@dcp answer,而是在case语句中使用子查询

INSERT @CustomTable
(
    id,
    Name,
    Amount
)
SELECT 
    1, 
    CustomerName,
    CASE 
        WHEN ISNULL(TableB.Amount,0) > 0 THEN TableB.Amount
        ELSE (SELECT TableA.Amount FROM TableA WHERE 1 = 1) --Replace logic to get value from TableA
    END AS Amount
FROM TableB

因为您使用的是2008,所以我将使用ISNULL()函数扭曲新的NULLIF()函数,并使用子查询:

insert @CustomTable (id, name, amount)
select
    1,
    CustomerName,
    ISNULL(NULLIF(TableA.Amount,0),(select Amount from TableB where TableB.ID = TableA.ID))
from
    TableA

因为您使用的是2008,所以我将使用ISNULL()函数扭曲新的NULLIF()函数,并使用子查询:

insert @CustomTable (id, name, amount)
select
    1,
    CustomerName,
    ISNULL(NULLIF(TableA.Amount,0),(select Amount from TableB where TableB.ID = TableA.ID))
from
    TableA

#CustomerTable、TableA和TableB之间的关系是什么?它们有共同的字段吗?#CustomerTable、TableA和TableB之间的关系是什么?他们有任何共同的字段吗?非常感谢您的回复。像这个一样,我可以用更多的sql server 2008样式做/学东西。非常感谢您的回复。像这个一样,我可以用更多的sql server 2008样式做/学东西