Zastapienie domyślnych rekordów przez zdefiniowane w 2 tabeli - teoria jak to zrobić w SQL

0

Cześć,

pracuje na PQ i Excelu, ale w zasadzie nie wiem jak podejść do tematu ogólnie. Czyli jak to zrobić w teorii.

mam 2 tabele:
t_Defaults:
titlehttps://imgupload.pl/zdjecie/1VIlx

i t_Customizations:
https://imgupload.pl/zdjecie/1VM1J

co chcę otrzymać:
https://imgupload.pl/zdjecie/1VWF5

Czyli jeżeli mam nie pusty rekord po kluczu Topology-Tier-Function w t_Customizations to mam zastapic ten rekord w tabeli t_Defaults oczywiście też po kluczu.
Czyli:

  1. Topo1&Tier1&Function1 --> mam wartości w t_Customizations dla tego klucza wiec wymieniam rekord
  2. Topo2&Tier2&Function2 --> to samo
  3. Topo3&Tier3&Function3 - ten rekord istnieje tylko w t_DEfaults a wiec po prostu biore go z t_Defaults i na nic nie zmieniam

Kto podpowie jak to zrobic technicznie? Jakich joinów uzyc?
I czy joinów?

Dołączam również plik w Excelu :
https://drive.google.com/file/d/1XhjPvYp8QANPFb1n-KJG5aMSnPz4SiZC/view?usp=sharing

Pozdrawiam i proszę o pomoc,
Jacek

1

Coś w ten deseń:

SELECT Coalesce(c.pole, d.pole)
FROM default d LEFT JOIN customizations c
ON d.Topo1=c.Topo1  And d.Tier1=c.Tier1 And d.Function1=c.Funtiocn1
0

To rozwiązanie chyba dla SQL Servera?

Co robi ta funkcja? Podpowiesz?

0

Bierze pierwszego Nie-NULLA
EDIT: A Ty w czym chcesz? W M?

0

Tak, dokładnie w M.

Probuje bawic sie z mergami i appendem,

0

To ci nie pomogę. Jeszcze tego w M nie potrzebowałem...

0

dziekuje za chęci,

kto wie jak to zrobic?
Pozdrawiam,
Jacek

2

Najprościej to użyc joinów do przefiltorowania tych ze zmienionymi domyślnymi wartościami i tych bez zmian i oba wyniki połączyć:

let
    tC = Excel.CurrentWorkbook(){[Name="t_Customizations"]}[Content],
    tD = Excel.CurrentWorkbook(){[Name="t_Defaults"]}[Content],
    tCustom = Table.NestedJoin(tC, {"Topology", "Tier", "Function"}, tD, {"Topology", "Tier", "Function"}, "cjoin"),
    tDefault = Table.NestedJoin(t_Defaults, {"Topology", "Tier", "Function"}, t_Customizations, {"Topology", "Tier", "Function"}, "cjoin", JoinKind.LeftAnti),
    tAll = Table.Combine({tCustom, tDefault}),
    tResult = Table.RemoveColumns(tAll,{"cjoin"})
  in
    tResult

Z SQL ma to niewiele wspólnego... ja mam najnowszego excela i zadzialało

1 użytkowników online, w tym zalogowanych: 0, gości: 1