Sql 使用另一个表中的计数更新列:我的查询不起作用。我犯了一个错误

Sql 使用另一个表中的计数更新列:我的查询不起作用。我犯了一个错误,sql,sql-server,tsql,Sql,Sql Server,Tsql,记分卡表: lsp 沃克斯 成功 AAA ZZZ BBB YYY CCC XXX 正如评论中提到的,存在一个很大的设计问题,但要回答您的问题: UPDATE [Scorecard] SET Success = ( SELECT COUNT(*) FROM [INVENTORY] WHERE [INVENTORY].STATUS = 'SUCCESS' AND [INVENTORY].[werks] = [Scorecard]

记分卡表:

lsp 沃克斯 成功 AAA ZZZ BBB YYY CCC XXX
正如评论中提到的,存在一个很大的设计问题,但要回答您的问题:

UPDATE [Scorecard] 
SET Success = (
        SELECT COUNT(*) 
        FROM [INVENTORY]  
        WHERE [INVENTORY].STATUS = 'SUCCESS'
        AND [INVENTORY].[werks] = [Scorecard].[werks]
        AND [INVENTORY].[lsp] = [Scorecard].[lsp]
              )

正如评论中提到的,存在一个很大的设计问题,但要回答您的问题:

UPDATE [Scorecard] 
SET Success = (
        SELECT COUNT(*) 
        FROM [INVENTORY]  
        WHERE [INVENTORY].STATUS = 'SUCCESS'
        AND [INVENTORY].[werks] = [Scorecard].[werks]
        AND [INVENTORY].[lsp] = [Scorecard].[lsp]
              )

这是一种可能的方法。我已经计算了沃克的分区

 SELECT 
  COUNT (1) OVER (PARTITION BY Werks ORDER by   lsp ) AS [num]
  ,Werks
 INTO #Temp_A
 FROM       [INVENTORY] 
 WHERE [Status] ='SUCCESS'


UPDATE A
   SET Success = B.num
 FROM  [Scorecard] A
 INNER JOIN  #Temp_A B ON A.Werks =  B.Werks 

DROP TABLE #Temp_A

这是一种可能的方法。我已经计算了沃克的分区

 SELECT 
  COUNT (1) OVER (PARTITION BY Werks ORDER by   lsp ) AS [num]
  ,Werks
 INTO #Temp_A
 FROM       [INVENTORY] 
 WHERE [Status] ='SUCCESS'


UPDATE A
   SET Success = B.num
 FROM  [Scorecard] A
 INNER JOIN  #Temp_A B ON A.Werks =  B.Werks 

DROP TABLE #Temp_A

您到底有什么问题?请回答您的问题并添加一些详细信息。一般情况下,您不应存储此类信息;插入、更新或删除行后,
COUNT
值即过期。这意味着您要么经常有过时的数据,要么必须有一些流程来不断更新表,要么实现触发器。您最好创建一个
视图
。同意Larnu。如果读取性能有问题,请使用索引视图。您的问题到底是什么?请回答您的问题并添加一些详细信息。一般情况下,您不应存储此类信息;插入、更新或删除行后,
COUNT
值即过期。这意味着您要么经常有过时的数据,要么必须有一些流程来不断更新表,要么实现触发器。您最好创建一个
视图
。同意Larnu。如果读取性能有问题,请使用索引视图。