如果QTOTALNETWORTH <(请参阅WHERE子句以获取所有字段),我需要更新QTOTALNETWORTH字段。当我使用以下查询时,出现“子查询返回了多个值...”错误。我通过主键将cte连接到ContactsQPROFILE。
此查询在哪里出错?任何帮助表示赞赏。我正在使用MSSQL。
WITH cte
AS (SELECT ContactsQPROFILE,
( QVALUEOFHOME + QVALUEOFOTHERRE
+ QRETIREMENTACCT + QLIQUIDASSTINPE + QBUSINESS
+ QLIFEINSHUSTERM + QLIFEINSHUSPERM
+ QLIFEINSWIFETER + QLIFEINSWIFEPER ) - QLIABILITIES AS TOTALNETWORTH
FROM ContactsQPROFILE
WHERE ( ( QVALUEOFHOME + QVALUEOFOTHERRE
+ QRETIREMENTACCT + QLIQUIDASSTINPE + QBUSINESS
+ QLIFEINSHUSTERM + QLIFEINSHUSPERM
+ QLIFEINSWIFETER + QLIFEINSWIFEPER ) - QLIABILITIES > QTOTALNETWORTH )
AND ( ( QVALUEOFHOME + QVALUEOFOTHERRE
+ QRETIREMENTACCT + QLIQUIDASSTINPE + QBUSINESS
+ QLIFEINSHUSTERM + QLIFEINSHUSPERM
+ QLIFEINSWIFETER + QLIFEINSWIFEPER ) > 0.00 ))
UPDATE cqp
SET cqp.QTOTALNETWORTH = cte.TOTALNETWORTH
FROM ContactsQPROFILE cqp
JOIN cte
ON cte.ContactsQPROFILE = cqp.ContactsQPROFILE
答案 0 :(得分:1)
我认为您可以直接更新表格:
@if
答案 1 :(得分:0)
在这种情况下,您不需要CTE,因为您仅使用ContactsQPROFILE中的列基于ContactsQPROFILE的内部条件更新ContactsQPROFILE。
也就是说,仅运行CTE的说明性部分,看看它是否由于某些原因而产生重复项。
答案 2 :(得分:0)
由于触发器,我得到了错误。禁用该功能后,我无需使用CTE就可以运行UPDATE查询。然后,我启用了触发器。