我希望有人能帮我解决问题。我有2个表:供应商和付款。
供应商表包含供应商编号和表示帐户是否已启用的标记。
Supplier
--------
NUM
ENAFLG
然后我有一张付款表,显示供应商支付的所有款项,包括付款日期(ACCDAT)。
Payment
-------
SUPNUM
ACCDAT
我需要做的是,如果供应商的最后一笔付款是在2016年01月01日之前进行的,则会禁用供应商。这是我的,但我得到以下错误:
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。
我需要能够传递多个值来更新Supplier表。
UPDATE dbo.SUPPLIER
SET ENAFLG_0 = 1
WHERE NUM_0 = (SELECT pay.SUPNUM_0
FROM dbo.PAYMENT AS pay
JOIN dbo.SUPPLIER AS bps ON bps.NUM_0 = pay.SUPNUM_0
GROUP BY pay.SUPNUM_0
HAVING MAX(pay.ACCDAT_0) < '01/01/2016')
任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
UPDATE dbo.SUPPLIER
SET ENAFLG_0 = 1
WHERE NUM_0 in (select pay.SUPNUM_0
from dbo.PAYMENT as pay
JOIN dbo.SUPPLIER as bps
on bps.NUM_0 = pay.SUPNUM_0
GROUP BY pay.SUPNUM_0
Having MAX(pay.ACCDAT_0) < '01/01/2016'
)