sqlshack (Polski)

instrukcja SQL Server CASE jest równoważna instrukcji IF-THEN w Excelu.

Instrukcja CASE jest używana do implementacji logiki, w której chcesz ustawić wartość jednej kolumny w zależności od wartości w innych kolumnach.

instrukcja SQL Server CASE składa się z co najmniej jednej pary instrukcji WHEN oraz THEN. Instrukcja WHEN Określa warunek, który ma być testowany. Instrukcja THEN określa akcję, jeśli warunek WHEN zwraca TRUE.,

Instrukcja ELSE jest opcjonalna i jest wykonywana, gdy żaden z warunków WHEN nie zwraca true. Instrukcja CASE kończy się słowem kluczowym END.

w tym artykule przyjrzymy się kilku różnym przykładom instrukcji CASE. Ale zanim to zrobimy, stworzymy fałszywe dane do pracy.,(div>

id INT,
GO
użyj ShowRoom;
Utwórz Samochody tabel
(
id INT,
name VARCHAR(50) NOT NULL,

company VARCHAR(50) not null,
power int not null,
Color VARCHAR(50) not null,
model int not null,
condition VARCHAR (50) not null
)

powyższy skrypt stworzył atrapę bazy danych o nazwie showroom z jedną tabelą w niej o nazwie cars., Tabela samochodów składa się z siedmiu kolumn: id, Nazwa, firma, moc, kolor, model i stan.

teraz wstawmy jakieś atrapy danych do tabeli samochodów., Wykonaj następujący skrypt:

sprawdźmy jak wygląda nasz zbiór danych, wykonaj następujący skrypt:

1
wybierz * z samochodów

wyjście wygląda tak:

możesz zobaczyć, że kolumna condition zawiera X w każdym wierszu w tej chwili., Ustawimy wartość kolumny condition, w zależności od Kolumny modelu, używając instrukcji CASE, abyś mógł wyraźnie zobaczyć, co się dzieje.,

The syntax of the CASE statement is pretty straight forward:

1
2
3
4
5

SELECT column1,
column2,
CASE WHEN CONDITION THEN 'Value1′
ELSE 'Value2′ END AS columnX
FROM Cars

The CASE statement has to be included inside the SELECT Statement., Zaczyna się od słowa kluczowego CASE, po którym następuje słowo kluczowe WHEN, a następnie warunek.

warunkiem może być dowolne poprawne wyrażenie SQL Server, które zwraca wartość logiczną. Na przykład, warunek może być model > 2000, klauzula THEN jest używana po warunku. Jeśli warunek zwraca true, wartość następująca po klauzuli THEN jest przechowywana w columnX. Else, wartość po klauzuli ELSE, będzie również przechowywana w columnX. Instrukcja SQL Server CASE kończy się klauzulą END.,

przykłady instrukcji CASE

zobaczmy teraz instrukcję CASE w akcji.

w poprzedniej sekcji stworzyliśmy tabelę o nazwie samochody w bazie salonów.

kolumna condition miała wartość X dla wszystkich wierszy. Przy pomocy polecenia SQL Server CASE ustawimy wartość kolumny condition na ” New ” jeżeli kolumna modelu ma wartość większą niż 2000, w przeciwnym razie wartość kolumny condition zostanie ustawiona na „Old”.,ok at the following script:

1
2
3
4
5

SELECT name,
model,
CASE WHEN model > 2000 THEN 'New'
ELSE 'Old' END AS condition
FROM Cars

The above script displays the name, model and condition columns from the Cars table., Wynik powyższego skryptu wygląda następująco:

widać, że wartość X w kolumnie condition została zastąpiona przez „New” i „Old” w zależności od modelu samochodu.

wiele warunków w instrukcji CASE

Możesz ocenić wiele warunków w instrukcji CASE.,

napiszmy instrukcję SQL Server CASE, która ustawia wartość kolumny condition na „New”, jeśli wartość w kolumnie model jest większa niż 2010, na „Average”, jeśli wartość w kolumnie model jest większa niż 2000, oraz na „Old”, jeśli wartość w kolumnie model jest większa niż 1990.,

wybierz nazwę,
model,
przypadek, gdy model > 2010 następnie”nowy”
gdy model > 2000 następnie”średni”
gdy model > 1990 następnie 'Stary'
else 'stary' kończy się jako warunek
z samochodów

wynik powyższego skryptu wygląda następująco:

w powyższym skrypcie przypisaliśmy trzy różne wartości do kolumny Condition w zależności od wartości w kolumnie modelu.,

jednak w powyższym skrypcie warunki nakładają się na siebie jako. model o wartości większej niż 2010 ma również wartość większą niż 2000 i 1990. Lepszym sposobem implementacji wielu warunków jest użycie operatorów logicznych, takich jak AND, OR, NOT, itp.,N model > 2010 następnie”nowy”

gdy model > 2000 i model <2010 następnie”średni”
gdy model > 1990 i model <2000 następnie 'stary'
else 'Stary' kończy się jako stan
z samochodów

wynik powyższego skryptu wygląda następująco:

możemy również ocenić wiele warunków z różnych kolumn za pomocą instrukcji SQL Server Case., W poniższym przykładzie przypiszemy wartość „New White” do kolumny condition, gdzie model jest większy niż 2010, a kolor jest biały.,HEN 'Nowy'

kiedy model > 2000 i model <2010 następnie 'Średnia'
kiedy model > 1990 i model <2000 następnie 'stary'
else 'Stary' kończy się jako warunek
z samochodów

wyjście wygląda tak:

z wiersza 5 widać, że ponieważ kolor jest biały, a model jest większy niż 2010, wartość kolumny condition została ustawiona na „New White” na wyjściu.,

użycie GROUP BY z instrukcją SQL Server CASE

Instrukcja CASE może być również używana w połączeniu z instrukcją GROUP BY w celu zastosowania funkcji agregujących.,v id=”1dd7e33b85″>

1
2
3
4
5
6
7
wybierz
przypadek, gdy model >2000, a następnie”nowy”
else”stary”kończy się jako stan,
count(1) jako count
z samochodów
Grupuj według przypadku, gdy model >2000 then 'new'
else 'Old' end

w powyższym skrypcie używamy funkcji count aggregate z instrukcją Case.,

polecenie SQL Server CASE ustawia wartość kolumny condition na „New” lub „Old”. Wewnątrz klauzuli GROUP BY określamy, że odpowiednia Liczba dla „New” jest zwiększana o 1, gdy napotkana jest wartość modelu większa niż 2000. Sekcja Else oznacza, że zwiększamy liczbę dla „starego” o 1, jeśli wartość modelu wynosi 2000 lub mniej. Wynik powyższego skryptu wygląda następująco:

ponieważ nasz zbiór danych ma pięć pojazdów o wartości 'model' większej niż 2000, możesz zobaczyć 5 w kolumnie zliczania dla „nowych” pojazdów., Podobnie, mieliśmy 5 starych pojazdów i stąd możemy zobaczyć 5 dla kolumny zliczania” starych ” pojazdów.

Podobnie możemy grupować przez więcej niż dwie wartości., 2000 następnie 'Średnia'

gdy model > 1990 następnie 'Stary'
ELSE 'Stary' kończy się jako stan,
COUNT(1) jako count
z samochodów
Grupuj według przypadku, gdy model > 2010 następnie 'nowy'
gdy model > 2000 następnie 'średni'
gdy model > 1990 następnie 'Stary'
else 'stary' koniec

iv id

w powyższym skrypcie pogrupowaliśmy dane w trzy kategorie:”nowe”, „średnie” i „stare”.,

wyjście wygląda tak:

możesz zobaczyć liczbę „nowych”, „średnich” i „starych” samochodów.

podsumowanie

Instrukcja CASE przydaje się, gdy chcemy zaimplementować logikę IF-THEN w SQL Server. W tym artykule dowiedzieliśmy się, czym jest CASE statement wraz z jego składnią. Widzieliśmy również różne przykłady instrukcji CASE wraz z jej użyciem z klauzulą GROUP BY.,

inne świetne artykuły z Ben

  • zrozumienie SQL Server query plan cache
  • Jaka jest różnica między Klastrowanymi i Nieklastrowanymi indeksami w SQL Server?
  • Jak korzystać z funkcji okna
  • odpytywanie danych za pomocą instrukcji CASE SQL Server
  • Autor
  • Ostatnie posty
BEN Richardson prowadzi szkolenia acuity wiodącym dostawcą szkoleń SQL w Wielkiej Brytanii., Oferuje pełną gamę szkoleń SQL od kursów wprowadzających po zaawansowane szkolenia z administracji i hurtowni danych-Więcej szczegółów znajdziesz tutaj. Acuity ma biura w Londynie i Guildford w Surrey., Czasami bloguje również na blogu Acuity
Zobacz wszystkie posty Ben Richardson

Ostatnie posty Ben Richardson (Zobacz wszystkie)
  • Power BI: wykresy wodospadu i połączone wizualizacje – 19 stycznia 2021
  • Power BI: formatowanie warunkowe i kolory danych w akcji – 14 stycznia 2021
  • Power BI: importowanie danych z serwera sql i MySQL – 12 stycznia 2021

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *