Таблица Train_status_new содержит (4000+) подробную информацию о кодах станции, через которую проходит поезд.
Train_status_new
RunId TrainNumber OriginStation_Name PrevStation_Name CurrentStation_Name NextStation_Name DestinationStation_Name
1 6063 MS VM NPM TDPR NCJ
1 6853 KIK TMPT NCR NULL NCR
2 6027 TBM VM ICG TPJ QLN
2 12605 MS GOC TPJ PDKT KKDI
3 12631 MS TEN ICG TPJ TEN
3 12654 TPJ KKPM ALU PNDM MS
Station_List содержит (700+) коды и названия станций.
Station_List
StationCode StationName
TDPR TIRUPADRIPULYUR
KKDI Karaikkudi
PDKT PUDUKKOTTAI
ALU Ariyalur
MS Chennai Egmore
NCJ Nagerkoil Junction
PNDM Pennadam
QLN Kollam Junction
TBM Tambaram
TEN Tirunelveli Junction
TPJ Tiruchirappalli Junction
VM Villupuram Junction
KKPM Kallakudi Plgh
GOC Golden Rock
Теперь я хочу назвать коды станций, которые есть в Train_status_new
. Итак, у меня есть этот запрос, но я получил дубликаты.
;with stationList as
(
select StationId, StationCode code, StationName from Station_List st
)
, origin as
(
select * from StationList st
join train_Status_New tr
on st.Code = tr.OriginStation_Name
)
, pre as
(
select st.StationName, tr.RunId, tr.TrainNumber, tr.PrevStation_Name
, tr.PrevStation_Act_Arr_Time, tr.PrevStation_Act_Dep_Time, tr.PrevStation_Sch_Arr_Time, tr.PrevStation_Sch_Dep_Time
from StationList st
join train_Status_New tr
on st.Code = tr.PrevStation_Name
)
, cur as
(
select st.StationName, tr.RunId, tr.TrainNumber, tr.CurrentStation_Name
, tr.CurrentStation_Act_Arr_Time, tr.CurrentStation_Act_Dep_Time, tr.CurrentStation_Sch_Arr_Time, tr.CurrentStation_Sch_Dep_Time
from StationList st
join train_Status_New tr
on st.Code = tr.CurrentStation_Name
)
, next as
(
select st.StationName, tr.RunId, tr.TrainNumber, tr.NextStation_Name
, tr.NextStation_Act_Arr_Time, tr.NextStation_Act_Dep_Time, tr.NextStation_Sch_Arr_Time, tr.NextStation_Sch_Dep_Time
from StationList st
join train_Status_New tr
on st.Code = tr.NextStation_Name
)
, dest as
(
select st.StationName, tr.RunId, tr.TrainNumber, tr.DestinationStation_Name
, tr.DestinationStation_Act_Arr_Time, tr.DestinationStation_Act_Dep_Time, tr.DestinationStation_Sch_Arr_Time, tr.DestinationStation_Sch_Dep_Time
from StationList st
join train_Status_New tr
on st.Code = tr.DestinationStation_Name
)
select distinct o.RunId, o.StationCode, o.RunDate, o.TrainNumber, t.Trainname, o.QueryRunDateTime
, o.OriginStation_Name , o.StationName O_StationName
Например, поезд 6063
имеет пять кодов станций. Таким образом, мой ожидаемый вывод содержит названия станций, которые получены из Station_List
.
RunId TrainNumber OriginStation_Name Origin_Name PrevStation_Name Prev_Name CurrentStation_Name Current_Name NextStation_Name Next_Name DestinationStation_Name Destination_Name
1 6063 MS Chennai Egmore VM Villupuram Junction NPM NagaMalai TDPR TIRUPADRIPULYUR NCJ Nagerkoil Junction
FYI:
version: Microsoft SQL Server 2012
- Эти таблицы содержат больше строк.
Train_Status_new
содержит более 25 столбцов в качестве столбца времени. Я не могу добавить это. Потому что они не используются в этих требованиях.