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。

谢谢

最佳答案

我认为您想将表格连接在一起:

select c.payment + coalesce(abs(d.deposit), 0)
from checks c left outer join
     @deposit d
     on c.CheckId = d.checks
     . . .


这会将存款金额的绝对值添加到每张支票中。如果@deposit中没有相应的记录,则付款不会更改。

关于mysql - sql子查询如何获取所需的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24488102/

10-10 10:02