我的上级要求我编写一个查询,该查询将搜索数据库中的每个表(每个代表道路及其交通总量),并按小时计算摩托车的总计数。到目前为止,这是我在一张桌子上进行测试时所拥有的:
WITH
totalCount AS
(
SELECT DATEDIFF(dd,0,event_time) AS DaySerial,
DATEPART(dd,event_time) AS theDay,
DATEDIFF(mm,0,event_time) AS MonthSerial,
DATEPART(mm,event_time) AS MonthofYear,
DATEDIFF(hh,0,event_time) AS HourSerial,
DATEPART(hh,event_time) AS Hour,
COUNT(*) AS HourlyCount,
DATEDIFF(yy,0,event_time) AS YearSerial,
DATEPART(yy,event_time) AS theYear
FROM [RUD].dbo.[10011E]
WHERE length <='1.7'
GROUP BY DATEDIFF(hh,0,event_time),
DATEPART(hh,event_time),
DATEDIFF(dd,0,event_time),
DATEPART(dd,event_time),
DATEDIFF(mm,0,event_time),
DATEPART(mm,event_time),
DATEDIFF(yy,0,event_time),
DATEPART(yy,event_time)
)
SELECT
theYear,
MonthofYear,
theDay,
Hour,
AVG(HourlyCount) AS Avg_Count
FROM
totalCount
GROUP BY
theYear,
MonthofYear,
theDay,
Hour
ORDER BY
theYear,
MonthofYear,
theDay,
Hour
现在我确定其中一些是多余的或不需要的,现在没关系(顺便说一句,我是 SQL 新手,这就是为什么其中一些是多余的)。基本上就目前而言,我列出了一条道路的摩托车的年、月、日、小时和每小时计数。现在我的两个问题:
如何获取此查询并使其搜索 RUD 数据库中的每个表?我只需要列出它们并将它们联合起来,还是有更快的方法?
我意识到,如果我搜索仅收集上述数据(年、月、日、小时、小时计数)的每个表,我最终会得到正确的数据,但无法区分所有计数来自哪条路。有没有办法选择表 ID(在此示例中,10011E 是 ID,并且是特定道路的指定名称)并将其放置在从中选择的行旁边的列中?
如果有人需要澄清我的意思,请告诉我!谢谢!