DECLARE @deposit TABLE(
checks VARCHAR(MAX),
deposit VARCHAR(MAX)
)
INSERT INTO @deposit
SELECT CheckID
, Total
FROM
DISCOUNT_DETAIL
INNER JOIN CHECK_DETAIL
ON DISCOUNT_DETAIL.CheckDetailID = CHECK_DETAIL.CheckDetailID
WHERE
DISCOUNT_DETAIL.DscntID = '98'
SELECT CASE WHEN CHECK_DETAIL.CheckID IN (SELECT checks
FROM @deposit)
THEN CHECKS.Payment + (SELECT abs(deposit) FROM @deposit)
ELSE
CHECKS.Payment
FROM ....
我收到一条错误:子查询返回多行。
如果我的支票ID与临时表格检查ID匹配,我该如何实现,然后只将该存款添加到付款中。
我正在使用SQL Server 2005。
由于
答案 0 :(得分:2)
我想你想加入这些表:
select c.payment + coalesce(abs(d.deposit), 0)
from checks c left outer join
@deposit d
on c.CheckId = d.checks
. . .
这将为每张支票增加存款金额的绝对值。如果@deposit
中没有相应的记录,则付款不会发生变化。
答案 1 :(得分:0)
THEN CHECKS.Payment + (SELECT abs(deposit) FROM @deposit)
这一行会返回多行,因此无法在付款中添加多笔金额
您可以使用聚合
SELECT sum(abs(deposit)) FROM @deposit
或添加一些条件
SELECT abs(deposit) FROM @deposit where user_id=12345