我試圖建立一個基於日期時間範圍的交易報告,對於可以在兩天內開放的業務,取決於班次管理。如何在DATETIME範圍內「分組」?
用戶可以選擇一個日期時間範圍(每月,每天,每週,免費...),我執行的查詢獲取startDateTime和EndDateTime,並將返回按天分組的所有交易。
I.E.
DateTime Total Sales
---------------------------
10/15/2010 $2,300.38
10/16/2010 $1,780.00
10/17/2010 $4,200.22
10/20/2010 $900.66
我的問題是,如果企業的轉變是設置好的,例如,從上午5點00分至上午02點,第二天,從午夜做到上午02時的所有交易將在第二天進行分組...等等...總數已損壞。 當一個企業有這樣的轉變,它希望基於這種轉變的報告,但沒有代碼修補(我使用Java調用Oracle本機查詢),我無法得到所需的報告。
我想知道是否有一些聰明的方式,由日期時間範圍分組這些事務使用無非是甲骨文。
這裏去查詢,以7月的月份:
SELECT Q1.dateFormat, NVL(Q1.sales, 0)
FROM (
SELECT to_date(to_char(tx.datetimeGMT +1/24 , 'mm-dd-yyyy'), 'mm-dd-yyyy') AS dateFormat
, NVL(SUM(tx.amount),0) AS sales
FROM Transaction tx
WHERE tx.datetimeGMT > to_date('20100801 08:59:59', 'yyyymmdd hh24:mi:ss') +1/24
AND tx.datetimeGMT < to_date('20100901 09:00:00', 'yyyymmdd hh24:mi:ss') + 1/24
GROUP BY to_date(to_char(tx.datetimeGMT +1/24 , 'mm-dd-yyyy'), 'mm-dd-yyyy')
) Q1
ORDER BY 1 DESC
它不一定是一個varchar值。 – Donnie 2010-11-26 16:26:18