2012-10-11 103 views
-1

我想獲得以下我的firebird分貝: 我有一個Timestamp屬性和貨幣值的屬性的記錄。現在我想查詢按月累計的貨幣價值,現在對我來說是棘手的事情:我希望每個月從下午16:30:00的第一天開始,直到下個月的下一個第一天16:29:59 。我不知道如何將此添加到where條件或其他地方? Thx幫助我!firebird sql月累計時間

例如。 時間戳值
...
2012-07-31 17點05分03秒23, -
2012-08-01 12點23分15秒15, -
切:
2012-08- 01 16:35:56 25, -
2012-08-02 12:23:15 5, -
2012-08-25 18:03:34 6, -
2012-08-31 08 :03:55 9, -
2012-09-01 12時23分15秒7,​​ -
切:
2012-09-01 16點47分43秒3, -
2012-09-02 19:13:10 8, -
2012-09-10 19:13:10 18, -
2012-09-30 19:13:10 3, -
2012 -10-02 19時13分10秒8, -
....

七月:23, - + 15, - = 38, -
八月:52, -
九月:32, -
十月:8, - 等等...

回答

1

您需要的日期移回(或轉發),這樣的THI開始時間小號月份適逢第一個月的00,然後簡單地通過時間戳的年份和月份部分組:

用一個簡單的表,我得到預期的結果使用:

WITH shifteddate AS (
    SELECT DATEADD(MINUTE, -30, DATEADD(HOUR, -16, infodate)) shifteddate, infovalue 
    FROM SUMEXAMPLE 
) 
SELECT EXTRACT(YEAR FROM shifteddate), EXTRACT(MONTH FROM shifteddate), SUM(infovalue) 
FROM shifteddate 
GROUP BY 1, 2 

你也可以使用子查詢而不是CTE,但我發現這更容易閱讀。

+0

非常好的解決方案,謝謝:)! – user1737743

+0

不客氣:) –