Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何在一个表中汇总两个不同年份的预订数量以进行比较_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何在一个表中汇总两个不同年份的预订数量以进行比较

Sql server 2008 如何在一个表中汇总两个不同年份的预订数量以进行比较,sql-server-2008,Sql Server 2008,我正在写一份报告,可以监控今年6月某个活动的预订数量,但也可以逐日比较去年同一活动的预订数量 该报告需要按日期汇总预订数量,需要对去年的活动进行同样的操作,但需要调整预订日期,以便与今年进行比较,我正在寻找一个表格,将这些数字并排放在一个表格中 所以 此代码为我提供了今年的运行预订总数: --2016 Bookings SELECT CAST(ep.CREATIONDATE AS DATE) AS 'Booking Date', COUNT(ep.CREATIONDATE) as '2016

我正在写一份报告,可以监控今年6月某个活动的预订数量,但也可以逐日比较去年同一活动的预订数量

该报告需要按日期汇总预订数量,需要对去年的活动进行同样的操作,但需要调整预订日期,以便与今年进行比较,我正在寻找一个表格,将这些数字并排放在一个表格中

所以

此代码为我提供了今年的运行预订总数:

--2016 Bookings
SELECT CAST(ep.CREATIONDATE AS DATE) AS 'Booking Date', 
COUNT(ep.CREATIONDATE) as '2016 Saturday Bookings'
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
WHERE em.DESCRIPTION = 'Open Day'
AND em.STARTDATE = '2016.11.06'
GROUP BY CAST(ep.CREATIONDATE AS DATE)
--2015 Bookings
SELECT CAST(DATEADD (d,364,ep.CREATIONDATE) AS DATE) AS 'Booking Date',
COUNT(ep.CREATIONDATE) as '2015 Saturday Bookings'
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
WHERE em.DESCRIPTION = 'Open Day'
AND em.STARTDATE = '2015.13.06'
GROUP BY CAST(DATEADD (d,364,ep.CREATIONDATE) AS DATE)
下一段代码为我提供了去年活动预订的运行总数,调整了364天,以便我可以将预订数量与活动开始前的相对同一天进行比较(去年6月13日举办的活动与今年6月11日相比):

基本上,我如何将这些代码“粘合”在一起,以便得到一个表,左侧有一个“预订日期”列,其中有一个2016年“协调”日期的连续列表,一个列与这些日期旁边的2016年预订总额,以及一个列与这些日期旁边的2015年比较预订总额

非常感谢任何指点

谢谢
Jon

对两个表的日期进行内部联接应该会有所帮助(如果我们可以确保每个表中都有所有的日期)。参考给定的代码

编辑日志: 我更改了查询,因为您提到您对临时变量(可能还有子查询)不太熟悉


全部外部连接(包括可能丢失的日期)通过BookingDate?感谢您的回复Shubham。恐怕语法似乎不正确;我试过运行这个,但是内部连接语句有问题-可能是在错误的位置?@Jon295087是的,我犯了一个小错误,对不起:非常感谢你的帮助,谢谢Shubham。我以前没有使用过temp变量,但运行修订后的代码会引发以下错误:Msg 4121,级别16,状态1,第1行找不到列“temp”或用户定义函数或聚合“temp.DATEPART”,或者名称不明确。请建议如何编辑此项?您好,@Jon295087我将查询编辑得更具描述性,如果您需要更多帮助,请告诉我。非常感谢。我担心它似乎无法正常工作——它会在这两个年份的每个表格行中填充数字,即使是在未来的2016年。
--2016 Bookings
SELECT CAST(ep.CREATIONDATE AS DATE) AS 'Booking Date', 
COUNT(ep.CREATIONDATE) as '2016 Saturday Bookings'
INTO #2016_Bookings
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
WHERE em.DESCRIPTION = 'Open Day'
AND em.STARTDATE = '2016.11.06'
GROUP BY CAST(ep.CREATIONDATE AS DATE)

--2015 Bookings
SELECT CAST(DATEADD (d,364,ep.CREATIONDATE) AS DATE) AS 'Booking Date',
COUNT(ep.CREATIONDATE) as '2015 Saturday Bookings'
INTO #2015_Bookings
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
WHERE em.DESCRIPTION = 'Open Day'
AND em.STARTDATE = '2015.13.06'
GROUP BY CAST(DATEADD (d,364,ep.CREATIONDATE) AS DATE)

--Join to publish both records in the same table
SELECT #2016_Bookings.[Booking Date],
       #2015_Bookings.[2015 Saturday Bookings],
       #2016_Bookings.[2016 Saturday Bookings]
FROM #2016_Bookings
INNER JOIN #2015_Bookings
    ON DATEPART(dd, #2016_Bookings.[Booking Date]) = DATEPART(dd, #2015_Bookings.[Booking Date])