Archiwa tagu: sql in z case

SQL IN z CASE

SQL IN z CASE



DEFINICJA

Polecenie IN opisywałem tutaj, ale ostatnio „buszując” w Internecie natrafiłem na ciekawe pytanie dotyczące zapytania SQL i postanowiłem rozwinąć trochę poprzedni wpis o rozwiązanie z CASE i podzapytaniem.


Przykład zastosowania polecenia IN z CASE

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
CASE
WHEN warunek1 THEN wartość1
WHEN warunek2 THEN wartość2
ELSE warunek3 THEN wartość3
END
)

Widzimy tutaj że w zależności od wyniku polecenie CASE zostanie wybrana wartość która będzie argumentem dla polenia IN.


Przykład zastosowania polecenia IN z podzapytaniem

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
SELECT TOP 1
nazwa_pola
FROM
nazwa_tabeli
WHERE
warunek
)

W tym przypadku zbiorem wartości dla IN jest wynik podzapytania.
Można by pójść o krok dalej i uzależnić wartości dla zbioru IN od zmiennej.


Przykład zastosowania polecenia IN z CASE i z deklaracją zmiennej.

DECLARE @zmienna varchar(5) = ‚100’

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
CASE
WHEN @zmienna < 100 THEN wartość1
WHEN @zmienna = 100 THEN wartość2
WHEN @zmienna > 100 THEN wartość3
END
)


Przykład zastosowania polecenia IN z podzapytaniem i z deklaracją zmiennej.

DECLARE @zmienna varchar(5) = ‚100’

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
SELECT TOP 1
nazwa_pola
FROM
nazwa_tabeli
WHERE
nazwa_pola <= @zmienna
)