SQL错误解释
我创建了一个临时表,我想更新一列,但收到一条错误消息SQL错误解释,sql,sql-server-2008,sql-server-2008-r2,Sql,Sql Server 2008,Sql Server 2008 R2,我创建了一个临时表,我想更新一列,但收到一条错误消息 UPDATE #volume SET Pending = (SELECT t1.[esc], t1.[Status], CONVERT(DATE, t1.[Requested Date and time (hh:mm)]), (SELECT count(*)
UPDATE #volume
SET Pending = (SELECT t1.[esc],
t1.[Status],
CONVERT(DATE, t1.[Requested Date and time (hh:mm)]),
(SELECT count(*)
FROM tmt t2
WHERE t2.[ese] = t1.[eRfx/eAuction]
AND t2.[status] = 'Pending'
AND CONVERT(DATE, t2.[Requested Date and time (hh:mm)])
<= CONVERT(DATE, t1.[Requested Date and time (hh:mm)])) cnt
FROM tmt t1)
挂起状态的输出应如下所示
----------
06/16/2014 1
06/17/2014 1
06/18/2014 1
06/19/2014 2
06/20/2014 2
正如评论中所指出的,这个错误是不言自明的。在只能有一个项的上下文中,子查询中的select中有多个项。您正在将项目设置为值,因此只允许一个 看起来您希望获得截至每个日期(包括每个日期)的挂起状态计数。可以通过使用相关子查询来执行此操作:
UPDATE v
SET Pending = (select count(*)
from tnt
where tnt.status = 'Pending' and
tnt.date <= v.date
)
FROM #volume v;
阅读和解释信息有什么困难?只允许使用一个表达式,因此要分配给“挂起”的选择只能包含一个值和一行。
UPDATE v
SET Pending = (select count(*)
from tnt
where tnt.status = 'Pending' and
tnt.date <= v.date
)
FROM #volume v;