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;