在SQL Stuck中,尝试根据COUNT的结果更新表列

时间:2018-11-14 15:22:32

标签: sql select count

我正在建立一个用于对生产数据进行统计分析的表。我已经提取了所有不同的案例,并构造了一个计数以查找表中每个独特案例出现了多少次。

我的问题是尝试使用COUNT的结果更新表的“ Number”列时出现的

这是我到目前为止的代码。

TRUNCATE TABLE WeightData

INSERT  INTO WeightData (WeightType,WeightIncrement)
SELECT  DISTINCT OutboardWeightTable,OutboardAmount
FROM    ProductionData
WHERE   [Datetime] between '180821_150000' and '180822_000000' and (OutboardAmount > 0)

--UPDATE WeightData
--SET Number = (
    SELECT  COUNT(*)
    FROM    WeightData a
            inner join ProductionData b
                ON (a.WeightType = b.OutboardWeightTable) and (a.WeightIncrement = b.OutboardAmount)
    WHERE   [Datetime] between '180821_150000' and '180822_000000' and (OutboardAmount > 0)
    GROUP   BY a.WeightType,a.WeightIncrement
--)

我已注释掉不起作用的行,但是当我尝试运行查询时,收到以下消息。我尝试了许多不同的方法来执行此操作,但我认为这是我的尝试。

  

消息512,级别16,状态1,过程TestProcedure,第24行子查询   返回的值超过1。子查询时不允许这样做   遵循=,!=,<,<=,>,> =,或当子查询用作   表达。

当我在注释了这些行之后运行代码时,这是表格和结果屏幕。

WeightData Table

Results from Query

1 个答案:

答案 0 :(得分:1)

我认为您只想要一个相关的子查询:

UPDATE WeightData
    SET Number = (SELECT COUNT(*)
                  FROM ProductionData pd
                  WHERE wd.WeightType = p.OutboardWeightTable and  
                        wd.WeightIncrement = pd.OutboardAmount AND
                        pd.OutboardAmount > 0 AND
                        pd.[Datetime] between '180821_150000' and '180822_000000'
                )
    FROM WeightData wd;