vwSalesByHour按預期工作,只顯示有銷售時間的記錄。自然,vwCumulativeDaySalesByHour也只顯示有銷售時間的記錄,但我需要它顯示一天中每個小時的記錄。我知道必須有一個簡單的方法來做到這一點比我所想的那麼容易得多......如果有人只是這麼好心指出來給我:)如何使此累積銷售查詢全部24小時
--This works great
CREATE VIEW vwSalesByHour AS
select SUM(t.TranAmount - t.DeliveryFee - t.TaxAmount) Sales,
BusinessDate,
DATEPART(HH, OrderTime) Hour
from transactions t
where TranState <> 11 and TicketNumber > 0
group by BusinessDate, DATEPART(HH, OrderTime)
--But I would like this to return records for all 24 hours
CREATE VIEW vwCumulativeDaySalesByHour
AS
select min(s1.Sales) Sales,
sum(s2.Sales) CumulativeSales,
s1.BusinessDate, s1.Hour
from SalesByHour s1 join
SalesByHour s2 on s1.BusinessDate = s2.BusinessDate and
s1.Hour >= s2.Hour
group by s1.BusinessDate, s1.Hour
謝謝。這幾乎正是我想到的,但只是需要一些確認,我沒有忽略一些更簡單的方法。 –
對於性能,它在一秒鐘左右的時間內運行了數年的數據,而且我只需要它在一天或最多一週內工作一次,所以我認爲我在那裏可以。但是這裏有一個額外的問題:如果在某個時候我想修改這個在24小時內沒有開始並且在午夜結束的時期,我想知道最簡單的方法是什麼? –
組合的表格方法。也許三個字段'(Date,Hour,DateTime)',那麼你只需要'WHERE DateTime BETWEEN x AND y'。通過添加'Year,Month,Week'等來進一步擴大使用範圍,然後添加'IsStartOfYear,IsStartOfMonth,IsStartOfWeek,IsStartOfDay,IsStartOfHour'等字段。它可以增長到各種使用狀態。字段越多,索引越多,空間越多。你可能有多個表並加入它們。沒有選擇的結束。 – MatBailie