私は上司から、データベース内のすべてのテーブル (道路の各代表と交通量の合計数) を検索し、オートバイの時間ごとの合計数を取得するクエリを作成するように依頼されました。1つのテーブルでテストしているときにこれまでに得たものは次のとおりです。
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は初めてなので、一部が冗長になる理由です)。基本的には、1 本の道路のバイクの年月日、時間、時間ごとの台数を記載しています。今私の2つの質問:
このクエリを取得して、RUD データベース内のすべてのテーブルを検索するようにするにはどうすればよいでしょうか? それらをすべてリストしてUNIONするだけですか、それとももっと簡単な方法がありますか?
上記 (年、月、日、時間、毎時のカウント) のみを収集するすべてのテーブルを検索すると、正しいデータが得られますが、すべてのカウントがどの道路から来ているのかを区別する方法はありません。テーブル ID (この例では、10011E が ID で、特定の道路に割り当てられた名前) を選択し、そこから選択された行の隣の列に配置する方法はありますか?
誰かが私が何を意味するかについて明確にする必要がある場合は、私に知らせてください! ありがとう!