У меня есть 3 таблицы, 1 основная и 2 таблицы, содержащие самые последние данные, которые должны быть заполнены (обновлены) в основной таблице.
Для этого мне нужно создать представление преобразования, которое слева соединяетдве таблицы с мастером.Для каждого значения я должен использовать функцию COALESCE, чтобы всегда выбирать значение из одной из двух таблиц с самыми последними данными, перед значением в основной таблице.
Некоторые поля существуют только в основной таблице, а некоторыенеобходимо обновить новыми данными из двух других таблиц.
До сих пор я использовал функцию COALESCE следующим образом:
COALESCE(System.tMirror_Roadpiece.Roadcode, System.tMirror_MasterTable.Roadcode)
Это должно выбрать значение из таблицы tMirror_Roadpiece, если оно не равно нулю.Моя проблема заключается в том, что я не уверен, как правильно объединить таблицы, при этом убедившись, что мои функции COALESCE работают должным образом.
В настоящее время мои объединения выглядят так:
FROM [System].[tMirror_Roadpiece]
left join System.tMirror_MasterTable on System.tMirror_Roadpiece.Id = System.tMirror_MasterTable.Id
left join System.tMirror_Zipcodes on System.tMirror_MasterTable.Zipcode = System.tMirror_Zipcodes.Zipcode
Но когда я выполняюмое утверждение SELECT я не получаю данных обратно.Как лучше всего структурировать свои объединения, чтобы обновить основную таблицу данными из двух других таблиц?Одна таблица объединяется по идентификатору, а другая - по почтовому индексу.
Предполагаемый вывод - это основная таблица, в которой релевантные данные обновляются из двух других таблиц, а остальные данные в основной записи остаются неизменными.,
Дайте мне знать, если вам нужна дополнительная информация.
Редактировать: Пример данных
Данные основной таблицы (CSV):
123,1,2015-05-07T13:00:48.623,2015-05-07T13:00:48.623,3446,Hospitalsringen,Hospitalsringen,68,,,,5260,Odense S,,,0461,Odense,350455,"Hollufgård Hgd., Fraugde",1f,704050,590541.26,6135939.39,55.36141744,10.42832236,A,5,TN,200,100m_61359_5905,1km_6135_590,10km_613_59,2015-05-07T13:00:49.533,00000667-2566-47c9-9ba0-f5ec6b8ce50f,1,2015-05-07T13:00:48.533,2018-07-04T18:00:00.000,1083,Region Syddanmark,"Hollufgård Hgd., Fraugde",04613436__68_______,9148,Tornbjerg,1465,Fyns Politi,1135,Retten i Odense,0043,Odense Syd,Byzone,350455,1f,704050,04613436__68,22.1,d90e9338-0470-41bc-8ecb-6f71dd912ff0,11604d86-af45-11e7-847e-066cff24d637,Ekstern,B,V0,10.42845878,55.36232181,25,Rosengårdskolen,1,,02da5b79-929c-f1b5-e053-d280220ac400
Редактировать: SQLкод
SELECT System.tMirror_MasterTable.[Infohub_RowId]
,System.tMirror_MasterTable.[Infohub_CreatedDate]
,System.tMirror_MasterTable.[Infohub_ValidityDate] AS [Infohub_ModifiedDate]
,System.tMirror_MasterTable.Infohub_HasChanged
,COALESCE(System.tMirror_Roadpiece.Id, System.tMirror_MasterTable.Id)
,[Status]
,System.tMirror_MasterTable.[Oprettet]
,System.tMirror_MasterTable.[Aendret]
,COALESCE(System.tMirror_Roadpiece.Vejkode, System.tMirror_MasterTable.Vejkode)
,COALESCE(System.tMirror_Roadpiece.Vejnavn, System.tMirror_MasterTable.Vejkode)
,COALESCE(System.tMirror_Zipcodes.Zipcode, System.tMirror_MasterTable.Zipcode)
,COALESCE(System.tMirror_Zipcodes.Zipcodenavn, System.tMirror_MasterTable.Zipcodenavn)
,COALESCE(System.tMirror_Roadpiece.Kommunekode, System.tMirror_MasterTable.Kommunekode)
,System.tMirror_MasterTable.[Kommunenavn]
,System.tMirror_MasterTable.[Regionskode]
,System.tMirror_MasterTable.[Regionsnavn]
,COALESCE(System.tMirror_Roadpiece.Navngivenvej_id, System.tMirror_MasterTable.Navngivenvej_id)
FROM
[System].[tMirror_Roadpiece] left join System.tMirror_MasterTable on System.tMirror_Roadpiece.Id = System.tMirror_MasterTable.Id
left join System.tMirror_Zipcodes on System.tMirror_MasterTable.Zipcode = System.tMirror_Zipcodes.Zipcode
WHERE
System.tMirror_MasterTable.Infohub_HasChanged = 1