检查字段是否为空或插入并插入sql server 2008

时间:2010-09-01 16:02:01

标签: tsql

在sql中生锈了

我有一种情况需要在临时表中插入一个字段“@Amount”。如果来自tableA的@amount为null或0从tableB获取

这是我正在做的事情的简化示例。这必须在插入#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

3 个答案:

答案 0 :(得分:1)

INSERT #CustomerTable(id,Name,Amount)
SELECT 1,
    CASE
      WHEN Amount IS NULL or Amount = 0 THEN TableA.CustomerName
      ELSE TableB.CustomerName
    END,
    Amount
FROM TableA, TableB
-- need a WHERE clause here to get TableA/TableB records, and you need to make
-- sure you join them properly

答案 1 :(得分:1)

非常接近@dcp答案,而不是在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

答案 2 :(得分:1)

由于您使用的是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