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>
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.,
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é“
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é“
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″>
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é“
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
Zobrazit všechny příspěvky od Ben Richardson
- 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