Służy do łączenia danych z różnych źródeł.
Jeśli nie użyto by, wiersze są łączone na zasadzie: pierwszy wiersz każdej tabeli z pierwszym wierszem każdej innej, drugi z drugim, itd.
Jeśli użyto instrukcji by, wiersze będą łączone według kluczy wymienionych w by. Jeśli w którejś z tabel zabraknie wiersza o identyfikatorze występującym w jakiejś innej tabeli, jej zmienne zostaną wypełnione wartością pustą, oznaczaną w SAS-ie przez kropkę. (in=zmienna) użyte przy tej tabeli zwróci wówczas zero.
Merge z by działa analogicznie do instrukcji full join w języku SQL (z zastrzeżeniem, że rozważane są tylko łączenia w relacji 1-do-1 lub 1-do-n). Używając konstrukcji (in=zmienna) oraz if możemy zasymulować "join" left join albo right join:
data wynik; merge tabela1(in=in1) tabela2; by id; if in1; run;
Równoważny kod SQL: create table wynik as select * from tabela1 as a left join tabela2 as b on a.id=b.id order by id;
Output Instrukcja output powoduje umieszczenie jednego wiersza w tabeli wynikowej.