3
問題:給定一週中的某一天(1,2,3,4,5,6,7),開始日期和結束日期,計算一週中給定的一天出現在開始日期和結束日期之間的次數,不包括沒有銷售的日期。T-SQL - 基於銷售確定兩個日期之間的特定天數
語境:
表 「門票」 具有以下結構和樣本內容:
i_ticket_id c_items_total dt_create_time dt_close_time
----------------------------------------------------------------------------
1 8.50 '10/1/2012 10:23:00' '10/1/2012 11:05:05'
2 10.50 '10/1/2012 11:00:00' '10/1/2012 11:45:05'
3 8.50 '10/2/2012 08:00:00' '10/2/2012 09:25:05'
4 8.50 '10/4/2012 08:00:00' '10/4/2012 09:25:05'
5 7.50 '10/5/2012 13:22:23' '10/5/2012 14:33:27'
.
.
233 6.75 '10/31/2012 23:20:00' '10/31/2012 23:55:39'
詳細
有可能會或可能不會對任何門票一個月內一天或多天。 (即該地點已關閉/那天/秒)
業務關閉的日子並不經常。沒有可預測的模式。
基於Get number of weekdays (Sundays, Mondays, Tuesdays) between two dates SQL, 我已經獲得的查詢返回的開始日期和結束日期之間發生一週中的某一天的次數:
DECLARE @dtStart DATETIME = '10/1/2013 04:00:00'
DECLARE @dtEnd DATETIME = '11/1/2013 03:59:00'
DECLARE @day_number INTEGER = 1
DECLARE @numdays INTEGER
SET @numdays = (SELECT 1 + DATEDIFF(wk, @dtStart, @dtEnd)-
CASE WHEN DATEPART(weekday, @dtStart) @day_number THEN 1 ELSE 0 END -
CASE WHEN DATEPART(weekday, @dtEnd) <= @day_number THEN 1 ELSE 0 END)
現在我只需要以過濾此數據,以便計數中不包含任何零美元天數。任何幫助您可以提供基於票據表內容添加此過濾器非常感謝!
這基本上工作。我不得不稍微修改它來照顧一對夫婦的情況,但前提是合理的。我將標記爲「已回答」,但有興趣查看是否有其他方法。 – user2883571