Instrukcja CASE w zapytaniu WHERE

0

Cześć mam problem w Microsoft SQL. Mam tabele wynagrodzenia która jest tabelą zbiorczą która przechowuje identyfikatory z poszczególnych tabel. Mam też tabele z pensjami i premiami i parę innych tabel. Wygląda to tak:
Wynagrodzenia:
screenshot-20220420223319.png
Premie:
screenshot-20220420223357.png
Pensje:
screenshot-20220420223903.png

Jak widać niektórzy pracownicy nie mają premii, wiec w polu id_premia wypisałem NULL.

Mam za zadanie zrobić zapytanie które wyświetli mi pracowników których suma pensji i premii jest większa od 4000. Próbowałem coś napisać, jednak za każdym razem pracownicy którzy nie mają premii (mają NULL w id_premii) nie są brani pod uwagę. Napisałem taki kod. Pomoże ktoś?

SELECT wy.id_pracownika, pe.kwota
	FROM ksiegowosc.wynagrodzenia wy
	JOIN ksiegowosc.pensje pe
	ON wy.id_pensji = pe.id_pensji
	JOIN ksiegowosc.premie pr
	ON wy.id_premii = pr.id_premii
	WHERE (pe.kwota + (CASE WHEN wy.id_premii IS NULL THEN 0
							ELSE pr.kwota END)) > 4000;

Dostaje taki wynik:
screenshot-20220420224200.png
Brakuje w nim paru pracowników których pensja jest większa od 4000 zł ale mają premie NULL.

1

zamień JOIN na LEFT JOIN ksiegowosc.premie

0

@obscurity: Dziękuje bardzo! Działa

1

Case możesz pominąć


	WHERE pe.kwota + isnull(pr.kwota,0) > 4000

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