0

因此,我在为从设备读取计算的新应用程序的报告创建 SPROC 时遇到了一些问题。这些读数都只是基本数字,每周都会进行。目前我正在尝试合并每个月的计算。

我开始玩弄 SUM 函数,因为我之前没有在 SUM 函数中完成子查询,并且我有以下内容:

SELECT
    (SELECT SUM(Reading) FROM Readings WHERE (MONTH(Readings.ReadingDate) = 1) AND MeterID = 1) AS January1,
    (SELECT SUM(Reading) FROM Readings WHERE (MONTH(Readings.ReadingDate) = 1) AND MeterID = 2) AS January2,
    (SELECT SUM(Reading) FROM Readings WHERE (MONTH(Readings.ReadingDate) = 1) AND MeterID = 3) AS January3     
FROM
    Readings
WHERE
Year(Readings.ReadingDate) = 2013

我将从中获取信息的表和字段是:

仪表:MeterID、MeterName

读数:ID、用户ID、MeterID、读数、读数日期

我知道它现在不是存储过程格式,基本上我有一种感觉,我对当前格式感到困惑,因为有 19 米,然后如果我在 12 个月的时间里接受它一年我将拥有一个 SPROC 的怪物长度,因为我觉得可能更简单。任何帮助都是极好的。

谢谢!

4

1 回答 1

2

使用“分组依据”:

SELECT
    MONTH(Readings.ReadingDate), MeterID, SUM(Reading) FROM Readings
WHERE 
    YEAR(Readings.ReadingDate) = 2013
GROUP BY 
    MONTH(Readings.ReadingDate), MeterID;

这应该给你 19 * 12 行,一个用于读取月份和仪表的每个组合。

(没有对此进行测试,但语法应该很接近。)

于 2013-05-14T14:33:55.373 回答