Wpis z mikrobloga

Mam pytania dotyczące #programowanie w #sql Mianowicie w ramach odświeżania sobie tego języka, próbuję stworzyć kod, który rozwiąże problemy przedstawione na załączonym obrazku (sam sobie ten problem wymyśliłem).

Opis problemu:
Mam tabelę 1 i tabelę 2, chcę uzyskać "rezultat".

1. W wersji pierwszej mamy dwie tabele z unikalnymi numerami, najpierw chcemy zrobić tabelę ze wspólną listę, a potem dorzucić do niej atrybut 1 i atrybut 2.
Jaki byłby na to kod SQL?

2B. Druga część pytania dotyczy przypadku, gdyby w źródłowych danych były duplikaty. Tutaj pierwsze co można zrobić to "skleić" dane, czyli jakby fizycznie położyć jedną tabelę pod drugą.
Jaki byłby na to kod SQL?

2B. Można by jeszcze stwierdzić, że jeśli dana wartośc występuje dokładnie raz w tabeli1 oraz dokładnie raz w tabeli2, to wtedy dla tych "niezduplikowanych danych" można by je złączyć zgodnie z logiką punktu 1; a w pozostałych przypadkach - czyli dla duplikatów "cały wiersz dać na koniec tabeli". Jaki byłby na to kod SQL? (na to nie robiłem już obrazka)

Proszę o pomoc!

Pobierz
źródło: comment_A7KcvbsNDKGJLrHOpsGMwrUua0BjaTjM.jpg
  • 2
1.
select isnull(s1.number,s2.number) number, s.attribute1, s2.attribute2
from source1 s1
full join source2 s2 on s1.number=s2.number


2.
select distinct s1.number, s1.attribute1, s1.sourcename
from source1 s1


lub

select s1.number, s1.attribute1, s1.sourcename
from source1
group by s1.number, s1.attribute1, s1.sourcename


(podobno bardziej wydajna metoda z grupowaniem niż z użyciem distincta)

_select *
from source1
union all
select *
from source2_