簡體   English   中英

TSQL:獲取每小時的銷售數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM