Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL将总和添加到现有查询(无法对包含聚合或子查询的表达式执行聚合函数。)_Sql_Sql Server_Group By - Fatal编程技术网

SQL将总和添加到现有查询(无法对包含聚合或子查询的表达式执行聚合函数。)

SQL将总和添加到现有查询(无法对包含聚合或子查询的表达式执行聚合函数。),sql,sql-server,group-by,Sql,Sql Server,Group By,我有一个现有的工作SQL查询,我现在想分组,但得到的错误是:无法对包含聚合或子查询的表达式执行聚合函数 我的情景说明: 我的主表dbo.DataLog包含3列,TimestampUTC、MeterTagId和Data 数据通常以15分钟的间隔输入,我有很多米的数据 协调世界时。数据列是一个浮点值,这是一个合计值。i、 为了得到一个米周期的实际值,我需要从当前值中减去最后一个值。在此之前,我已成功地查询单个仪表,但现在我尝试按时间分组,并显示该时间所有仪表的总和/总数 原始工作非求和查询: 我尝

我有一个现有的工作SQL查询,我现在想分组,但得到的错误是:无法对包含聚合或子查询的表达式执行聚合函数

我的情景说明:

我的主表dbo.DataLog包含3列,TimestampUTC、MeterTagId和Data

数据通常以15分钟的间隔输入,我有很多米的数据 协调世界时。数据列是一个浮点值,这是一个合计值。i、 为了得到一个米周期的实际值,我需要从当前值中减去最后一个值。在此之前,我已成功地查询单个仪表,但现在我尝试按时间分组,并显示该时间所有仪表的总和/总数

原始工作非求和查询:

我尝试获取摘要:


我在这里读过其他文章,但无法理解所需的逻辑,我想/希望这是sql开发人员经常遇到的事情?谢谢

好吧,我算出来了,真的很简单。希望这个解释能在将来帮助其他人解决同样的问题

SELECT 
    myTable.TimestampUTC
    , SUM(myTable.Actual_Value) as [Actual Value]
FROM
(
--My original query
) AS myTable

GROUP BY myTable.TimestampUTC
 SELECT
    l.TimestampUTC
    -- Get this value minus the last value
    ,   (SELECT  SUM(l.[Data] - 
                (   SELECT TOP 1 l2.Data
                    FROM [DataLog] l2
                    WHERE l2.MeterTagId = l.MeterTagId
                    AND l2.TimestampUTC < l.TimestampUTC
                    ORDER BY l2.TimestampUTC DESC)
                )
        )AS Actual_Value
    FROM [dbo].[DataLog] l
    INNER JOIN [dbo].MeterTags t on t.MeterTagId = l.MeterTagId
    INNER JOIN [dbo].Meters m on m.MeterId = t.MeterId
    INNER JOIN [dbo].GroupsMeters gm on gm.MeterId = m.MeterId
    INNER JOIN [dbo].Groups g on g.GroupId = gm.GroupId
    LEFT OUTER JOIN dbo.Units u on u.UnitId = t.UnitId
    WHERE (@MeterId is null OR M.MeterId in (@MeterId))
    AND (@MeterTagId is null OR t.MeterTagId in (@MeterTagId))
    AND (@StartDate is null OR l.TimestampUTC >= @StartDate)
    AND (@EndDate is null OR l.TimestampUTC <= @EndDate)
    AND (@GroupId is null OR g.GroupId in (@GroupId))
    AND t.Name ='Real Energy Net'
    GROUP BY l.TimestampUTC
SELECT 
    myTable.TimestampUTC
    , SUM(myTable.Actual_Value) as [Actual Value]
FROM
(
--My original query
) AS myTable

GROUP BY myTable.TimestampUTC