0
私はこのクエリを使用して毎月の合計を計算しようとしています。グループ期待通りにグループ化しないでください。
SELECT
fld_year
, fld_month
, CONVERT(nvarchar(7), fld_ConsDate, 121) AS fld_ConsDate
, fld_ConsumptionValue
, fld_Id
FROM (
SELECT
YEAR(DATEADD(MINUTE, fld_TZAM - 6360, fld_ConsDateTime)) AS fld_year
, MONTH(DATEADD(MINUTE, fld_TZAM- 6360, fld_ConsDateTime)) AS fld_month
, DATEADD(MONTH, DATEDIFF(MONTH, 0, fld_ConsDateTime), 0) AS fld_ConsDate
, SUM(fld_EnergyTotalIndexValue) AS fld_ConsumptionValue
, MAX(fld_Id) AS fld_Id
FROM tbl_EM_DeviceEnergyHourlyConsumption
WHERE fld_Deleted = 0
AND fld_Active = 1
AND fld_CalculationState = 2
AND fld_DeviceId IN (18)
AND fld_ConsDateTime >= DATEADD(MINUTE, -1*(fld_TZAM) + 6360, '2017-05-01 00:00:00')
AND fld_ConsDateTime < DATEADD(MINUTE, -1*(fld_TZAM) + 6360, '2017-08-01 00:00:00')
AND fld_DeviceOrganizationId IN (SELECT Value FROM dbo.fn_OrganizationSubList(2))
GROUP BY
YEAR(DATEADD(MINUTE, fld_TZAM - 6360, fld_ConsDateTime)),
MONTH(DATEADD(MINUTE, fld_TZAM - 6360, fld_ConsDateTime)),
DATEADD(MONTH, DATEDIFF(MONTH, 0, fld_ConsDateTime), 0),
)T ORDER BY fld_ConsDate ASC
私が期待した結果が
fld_year fld_month fld_ConsDate fld_ConsumptionValue fld_Id
2017 5 2017-05 294.1340
2017 6 2017-06 222.7527
2017 7 2017-07 318.2111
ですが、代わりに、私は毎月の2つの値
fld_year fld_month fld_ConsDate fld_ConsumptionValue fld_Id
2017 5 2017-05 260.2158
2017 6 2017-06 193.4958
2017 5 2017-06 33.9182
2017 6 2017-07 29.2569
2017 7 2017-07 264.8147
2017 7 2017-08 53.3964
を取得し、私は私のための任意のヒントをそれを把握するように見えることはできませんか?私の論理がどこに間違っているのか誰にでも見せることができますか?前もって感謝します!
あなたのクエリに個別の追加試すことができます**明確なfld_yearを選択** –
'fld_ConstDate'日が含まれていますが、との結果でそれを切り捨てているのグループ化'CONVERT'式です。 'GROUP BY'の' CONVERT'式を使って、年と月だけをグループ化することができます。 –