我创建了一个临时表,我想更新一列,但收到错误消息。
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)
我是SQL Server新手,任何人都可以向我解释以下消息
当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式。
原始数据
## Date Status ##
----------
06/16/2014 Pending
06/17/2014 Completed
06/18/2014 Completed
06/19/2014 Pending
06/20/2014 Completed
待处理状态的输出应如下所示
----------
06/16/2014 1
06/17/2014 1
06/18/2014 1
06/19/2014 2
06/20/2014 2
答案 0 :(得分:1)
如他所评论的那样,该错误非常明显。子查询中的select
中有多个项目,在这个上下文中您只能有一个项目。您正在将项目设置为值,因此只允许使用一个。
看起来您想要计算待处理状态的计数,包括每个日期。您可以使用相关子查询来执行此操作:
UPDATE v
SET Pending = (select count(*)
from tnt
where tnt.status = 'Pending' and
tnt.date <= v.date
)
FROM #volume v;