[英]TSQL: Get sales data for each hour
我目前正在使用以下代碼從數據庫中獲取銷售數據。 它的問題在於,在沒有銷售的那些小時中,它不會顯示0。我不介意對小時進行硬編碼,但是我找不到找到這種方法的方法。 所以,
1.st問題:我如何修改下面的代碼,以在0小時內沒有銷售的情況下顯示0,
第二個問題:如何從中得到訂購清單。 下面的代碼將9:00-10:00放置在列表的末尾,因為它不是兩位數。
-- HOUR BASED SALES
select (CAST(DATEPART(HOUR, INSERTDATE) as varchar(255)) + ':00 -' +
CAST(DATEPART(HOUR, INSERTDATE) as varchar(255)) + ':59'
) as [time],
SUM (TOTAL) as REVENUE,
COUNT (RECEIPTID) AS TOTAL_SALES,
DEPOTID
From INVOICE INV
WHERE DEPOTID IN (25) AND TRANSDATE BETWEEN '20181025' AND '20181025'
Group By cast(datepart(hour, INSERTDATE) AS VARCHAR(255)), DEPOTID
ORDER BY CAST(DATEPART(HOUR, INSERTDATE) AS VARCHAR(255))
您可以列出小時數並使用left join
:
select (cast(v.hh as varchar(255)) + ':00 -' +
cast(v.hh as varchar(255)) + ':59'
) as [time],
sum(TOTAL) as REVENUE,
sum(RECEIPTID) AS TOTAL_SALES,
depot
From (values (0), (1), . . . (23)
) v(hh) left join
invoice i
on datepart(hour, i.insertdate) = v.hh and
i.depotid in (25) and
i.transdate between '20181025' and '20181025'
group by v.hh, DEPOTID
order by v.hh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.