Использование объединения с левыми соединениями для заполнения главной таблицы самыми последними данными - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть 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
...