当前位置: 首页 > 面试题库 >

聚合可能不会出现在UPDATE语句的设置列表中

李奕
2023-03-14
问题内容
UPDATE [silverdb01].[dbo].[info] 
SET [FM] = SUM(a.[MONDAY] - b.[QUOTA]) 
FROM  [silverdb01].[dbo].[info] a,  [silverdb01].[dbo].[quota] b 
WHERE a.[WORK_TYPE]='IN' AND a.[NAME]='KUTHAY'

运行此命令时,出现以下错误:

聚合可能不会出现在UPDATE语句的设置列表中。

有任何想法吗?


问题答案:

我猜(正如其他人所指出的那样),您确实不需要此更新上的笛卡尔坐标,所以我在查询中添加了一个“ id”,因此您将必须进行一些修改,但这可能会使您走上正确的道路

;with temp as (
    select  a.id, SUM(a.pazartesi - b.kota) as newTotal
    from    [asgdb01].[dbo].[info] a join [asgdb01].[dbo].[kota] b 
          on a.id = b.id
    where   a.work_type='in' and a.name='alp' )
update  a
set     fm = t.newTotal
from    [asgdb01].[dbo].[info] a join temp t on a.id = t.id


 类似资料:
  • 问题内容: 我有此SQL语句,并且SQL Server给我以下错误: 除非聚合不在HAVING子句或选择列表中包含的子查询中,否则它可能不会出现在WHERE子句中。 在where子句中,我只想提取最旧的未付款帐单日期大于DelinquentDaysThreshhold(以天为单位)或PastDueAmount(计算值)大于DelinquentAmountThreshold的记录。 由于某些原因,S

  • 问题内容: 我正在尝试使用以下代码: 但我最终收到以下错误: 聚合可能不会出现在WHERE子句中,除非它在HAVING子句或选择列表中包含的子查询中,并且正在聚合的列是外部引用SELECT dbo。[PatRoster]。* FROM dbo。[PatRoster] WHERE PatID = @PatIDParam和EffectiveEnrollmentDate IN(选择MAX(Effecti

  • 问题内容: 我正在进行大量CRUD操作,并在CUD之外创建合并存储过程。我存储的过程看起来像这样 当我执行此操作时,我得到了这个完整的错误 消息10714,级别15,状态1,过程usp_AdministrationHistoryMerge,第36行在MERGE语句的“ UPDATE”子句中,“ WHEN MATCHED”类型的动作不能出现多次。 我四处寻找SO,并找到了解决此问题的几种方法,但是我

  • 问题内容: 我有一个合并语句,该语句应始终更新或插入单个记录。我想记住该语句在变量中的ID。看起来像这样: 现在这不起作用,因为您不能以这种方式在输出子句中设置@int。我知道我可以创建一个模板并在输出中使用 INTO @temptable 。但是由于我 知道 它始终是一条记录,因此我希望将ID包含在INT变量中。这有可能吗?还是我被迫使用表变量。我希望我只是缺少一些语法。 问题答案: 不,您必须

  • 本文向大家介绍使用MySQL的UPDATE语句中的if语句显示条件已设置的记录,包括了使用MySQL的UPDATE语句中的if语句显示条件已设置的记录的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是在更新时设置条件的查询- 让我们再次检查表记录- 这将产生以下输出-

  • 问题内容: 我有此查询返回我的ID 但我收到此语句的语法错误 我如何正确更新从第一条语句中检索到的ID 问题答案: 正确的: