我希望在上个月每天计算每小时的订单。
我有另一个报告(1)中的WHERE
条款,该条款确定了上个月的正确月份'从它运行的角度来看。
我希望在最左边的时间里能够有几个小时的时间。列,而不是日期。
我以为我可以在WHERE
内获得不同的日子,然后计算datepart,其中小时= 1,2等。但是,下面的代码(2)会导致超过300条记录。
非常感谢任何帮助或建议,已经持续了好几个小时,热衷于了解如何/为什么这样做会像工作代码那样发生。
谢谢大家,希望我的问题没问题
(1)
WHERE YEAR(Bookings.PICKUP_DATE)
= YEAR(DATEADD(mm, -1, DATEADD(m, DATEDIFF(m, 0, getdate()), 0)))
AND MONTH(Bookings.PICKUP_DATE)
= MONTH(DATEADD(mm, -1, DATEADD(m, DATEDIFF(m, 0, getdate()), 0)))
(2)
select
distinct(datepart(dd,b.pickup_date)) as DAYOFTHEMONTH
,COUNT(CASE WHEN DATEPART(HH,B.PICKUP_DATE) = 1 THEN 1 ELSE 0 END)
答案 0 :(得分:1)
道歉之前不清楚。我现在已经解决了这个问题。
我记录太多的原因只是我的GROUP BY子句没有应用DAY功能。
我的数据集现在正确无误,我在日期范围内获得了所有日期:
distinct(datepart(dd,timestamp)) as DAYOFTHEMONTH
一小时的订单数量(在这种情况下是午夜)是:
count(case when datepart(hh,timestamp) = 0 then timestamp else null end) as '00:00'
我的WHERE子句提供当前月份之前的所有数据:
WHERE
YEAR(timestamp) = YEAR(DATEADD(mm,-1,DATEADD(m,DATEDIFF(m,0,getdate()),0)))
AND
MONTH(timestamp) = MONTH(DATEADD(mm,-1,DATEADD(m,DATEDIFF(m,0,getdate()),0)))
最后,我将DAY的正确分组应用于GROUP BY
GROUP BY day(timestamp)
很抱歉不清楚。希望这对未来的某些人有用。
感谢编辑/帮助太多人,我会确保我提出的任何其他问题都是正确的:)