SQLShack (Čeština)

SQL Server CASE je ekvivalentní if-then prohlášení v aplikaci Excel.

příkaz CASE se používá k implementaci logiky, kde chcete nastavit hodnotu jednoho sloupce v závislosti na hodnotách v jiných sloupcích.

příkaz SQL Server CASE se skládá alespoň z jedné dvojice kdy a pak příkazů. Příkaz WHEN určuje podmínku, která má být testována. Příkaz pak určuje akci, pokud podmínka kdy vrátí TRUE.,

příkaz ELSE je volitelný a provádí se, když žádná z podmínek, kdy se vrátí true. Prohlášení o případu končí klíčovým slovem.

v tomto článku se podíváme na řadu různých příkladů případového prohlášení. Ale než to uděláme, vytvoříme nějaká fiktivní data, se kterými budeme pracovat.,/td>

VYTVOŘIT Databáze ShowRoom;
POUŽÍT ShowRoom;
VYTVOŘIT TABULKU Automobilů
(
id INT,
název VARCHAR(50) not NULL,
společnost VARCHAR(50) not NULL,
power INT not NULL,
barva VARCHAR(50) not NULL,
model INT not NULL,
stav VARCHAR(50) not NULL
)

skriptu výše má vytvořen fiktivní databázi s názvem ShowRoom s jednou Tabulkou v to jmenuje Auta., Tabulka vozů má sedm sloupců: id, jméno, společnost, výkon, barva, model a stav.

nyní vložíme do tabulky vozů nějaká fiktivní data., Spusťte následující skript:

Pojďme se podívat, jak náš dataset vypadá, spusťte následující skript:

1
VYBERTE * Z Automobilů

výstup vypadá takto:

můžete vidět, že stav sloupec obsahuje X v každé řadě, v tuto chvíli., Budeme nastavit hodnotu stavu sloupci, v závislosti na modelu sloupec, pomocí CASE, takže můžete jasně vidět, co se děje.,

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., Začíná klíčovým slovem případu, po kterém následuje Klíčové slovo WHEN a poté podmínka.

Podmínkou může být jakýkoli platný výraz SQL Serveru, který vrací booleovskou hodnotu. Podmínkou může být například model > 2000, pak se za podmínkou použije klauzule. Pokud podmínka vrátí true, hodnota, která následuje po klauzuli pak je uložena v columnX. Jinak bude hodnota za klauzulí ELSE uložena také ve sloupci x. Příkaz SQL Server CASE končí koncovou klauzulí.,

příklady prohlášení o případu

podívejme se nyní na Prohlášení o případu v akci.

v předchozí části jsme vytvořili tabulku s názvem auta uvnitř databáze showroomu.

sloupec stavu měl hodnotu X pro všechny řádky. Použijeme příkaz SQL Server CASE k nastavení hodnoty sloupce podmínka na „Nový“, pokud má sloupec modelu hodnotu větší než 2000, jinak bude hodnota sloupce podmínka nastavena na“starý“.,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., Výstup skriptu výše vypadá takto:

můžete vidět, že hodnota X v stav sloupec byl nahrazen „Nové“ a „Staré“ v závislosti na modelu vozu.

Vícenásobné podmínky v prohlášení o případu

v prohlášení o případu můžete vyhodnotit více podmínek.,

Pojďme napsat SQL Server CASE, který nastaví hodnotu na sloupci stav na „New“, pokud je hodnota v modelu sloupec je větší než 2010, „Průměrné“, pokud je hodnota v modelu sloupec je větší než 2000, a „Staré“, pokud je hodnota v modelu sloupec je větší než v roce 1990.,

VYBRAT jméno,
model,
PŘÍPADĚ, KDY model > 2010 PAK „Nové“
, KDYŽ model > 2000 PAK „Průměrné“
, KDYŽ model > 1990 PAK „Staré“
JEŠTĚ „Staré“ END JAKO stav
Z Automobilů

výstup skriptu výše vypadá takto:

Ve skriptu výše, jsme přiřadili tři různé hodnoty stav sloupec v závislosti na hodnotě v modelu sloupce.,

ve výše uvedeném skriptu se však podmínky překrývají jako. model s hodnotou vyšší než 2010 má také hodnotu vyšší než 2000 a 1990. Lepší způsob, jak implementovat více podmínek, je použít logické operátory jako A, nebo, ne, atd.,N model > 2010 PAK „Nové“

, KDYŽ model > 2000 A model <2010 PAK „Průměrné“
, KDYŽ model > 1990 A model <2000 PAK ‚Starý‘
JEŠTĚ „Staré“ END JAKO stav
Z Automobilů

výstup skriptu výše vypadá takto:

můžeme také vyhodnotit více podmínek, z různých sloupců pomocí SQL Server CASE., V následujícím příkladu přiřadíme hodnotu „nové bílé“ sloupci podmínek, kde je model větší než 2010 a barva je bílá.,SLEPICE „Nové“

, KDYŽ model > 2000 A model <2010 PAK „Průměrné“
, KDYŽ model > 1990 A model <2000, PAK „Staré“
JEŠTĚ „Staré“ KONEC JAKO stav
Z Automobilů

výstup vypadá takto:

můžete vidět z řádku 5, která vzhledem k tomu, barva je bílá a model je větší než v roce 2010, hodnota pro podmínku sloupce byla nastavena na „Novou Bílou“ ve výstupu.,

použití skupiny pomocí příkazu SQL Server CASE statement

příkaz CASE lze také použít ve spojení se skupinou podle příkazu za účelem použití agregovaných funkcí.,v id=“1dd7e33b85″>

1
2
3
4
5
6
7
VYBRAT
PŘÍPADĚ, KDY model > 2000 PAK „Nové“
JEŠTĚ „Staré“ END JAKO stav,
COUNT(1) JAK počítat
Z Automobilů
SKUPINA O PŘÍPAD, KDY model > 2000 PAK „Nové“
JEŠTĚ „Staré“ END

Ve skriptu výše, použijeme agregační funkce POČET s CASE.,

příkaz SQL Server CASE nastaví hodnotu sloupce podmínka na „nový“nebo “ starý“. Uvnitř klauzule skupina podle specifikujeme, že odpovídající počet pro „Nový“ se zvýší o 1, kdykoli se vyskytne hodnota modelu větší než 2000. Sekce Else znamená, že zvýšíme počet „starých“ o 1, pokud je hodnota modelu 2000 nebo méně. Výstup skriptu výše vypadá takto:

Od našeho dataset má pět vozidel, jejichž hodnota pro ‚model‘ větší než 2000, můžete vidět 5 ve sloupci počet na „Nového“ vozidla., Podobně jsme měli 5 starých vozidel, a proto můžeme vidět 5 pro počítací sloupec „starých“ vozidel.

podobně můžeme seskupit o více než dvě hodnoty., 2000 PAK „Průměrné“

, KDYŽ model > 1990 PAK „Staré“
JEŠTĚ „Staré“ END JAKO stav,
COUNT(1) JAK počítat
Z Automobilů
SKUPINA O PŘÍPAD, KDY model > 2010 PAK „Nové“
, KDYŽ model > 2000 PAK „Průměrné“
, KDYŽ model > 1990 PAK „Staré“
JEŠTĚ „Staré“ END

Ve skriptu výše, jsme seskupených dat do tří kategorií: „Nové“, „Průměrný“ a „Staré“.,

výstup vypadá takto:

můžete vidět počet pro „Nové“, „Průměrný“ a „Staré“ stav auta.

závěr

příkaz CASE se hodí, když chcete implementovat IF-THEN logiku v SQL Serveru. V tomto článku jsme viděli, jaké prohlášení o případu je spolu s jeho syntaxí. Viděli jsme také různé příklady případového prohlášení spolu s jeho použitím se skupinou podle klauzule.,

Další skvělé články od Ben

  • Porozumění SQL Server query plán cache
  • Jaký je rozdíl mezi Clustery a Bez Clusterů Indexy v SQL Serveru?
  • Jak používat okno funkce
  • Dotazování dat pomocí SQL Server CASE
  • Autora
  • Poslední Příspěvky
Ben Richardson běží Ostrosti Školení předním poskytovatelem SQL školení ve velké BRITÁNII., Nabízí celou řadu školení SQL od úvodních kurzů až po pokročilé školení správy a datových skladů – další podrobnosti naleznete zde. Ostrost má kanceláře v Londýně a Guildfordu v Surrey., On také blogy občas na Ostrosti blog
Zobrazit všechny příspěvky od Ben Richardson

Nejnovější příspěvky Ben Richardson (zobrazit všechny)
  • Power BI: Vodopád Grafy a Kombinované Vizuální – 19. ledna 2021
  • Power BI: Podmíněné formátování a data barvy v akci – 14. ledna 2021
  • Power BI: Import dat z SQL Server a MySQL – 12. ledna 2021

Share

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *