我有一張表,用戶輸入每日人口。那天在一個特定的設施中有多少人。該表類似於這樣:按引用正確月份/天數的天數劃分
select * from stat_summary where MONTH(report_date) = 9
結果:
stat_summary_id | report_date | facility | adp
----------------------------------------------------
29 |2015-09-01 | YORK | 1855
30 |2015-09-02 | YORK | 1750
31 |2015-09-04 | YORK | 1655
32 |2015-09-04 | YORK | 1699
我想要做的就是通過計算分爲每月平均每天的人口。如果必須重新輸入更正的值,我想採取MAX(report_date)
。我的查詢是這樣的:
SELECT
MONTH(t.report_date) as 'report_month',
SUM(ss1.adp)/DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,MONTH(t.report_date)),0))),
DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,MONTH(t.report_date)),0)))
FROM
stat_summary ss1
INNER JOIN
(SELECT MAX(stat_summary_id) as 'stat_summary_id', report_date
FROM stat_summary
GROUP BY report_date
) t ON t.stat_summary_id = ss1.stat_summary_id
WHERE
ss1.facility_id = 'YORK'
AND MONTH(t.report_date) = 9
GROUP BY
MONTH(t.report_date)
ORDER BY
MONTH(t.report_date)
我引用這個線程: Dividing a value by number of days in a month in a date field in SQL table
,我能看到如何動態地在一個月的天數劃分,但看起來它是除以具有31天的當前月份(10月),當我需要查詢除以引用的具有30天的9月份時。
目前我的結果如下:
的adp
值應爲176.8,因爲還有30天月,而不是31
您可以創建一個標量UDF,該標量UDF根據傳遞給它的月份返回一個月內的天數。 –