Scénář:
Pracujete jako vývojář SQL Serveru, potřebujete dotaz na tabulku dbo.Customer, která má sloupec CountryShortName se zkratkami zemí. Chcete vygenerovat další sloupce s celým názvem země pomocí hodnot sloupců CountryShortName. Jak byste to udělali?Řešení:
Tento nový sloupec můžete vygenerovat pomocí výrazů Case v závislosti na hodnotě CountryShortName. V našem příkladu používáme pouze jednotlivé sloupce, ale můžete použít více sloupců a zkontrolovat více podmínek.Vytvořme tabulku dbo.Customer s ukázkovými daty a poté napíšeme příkaz Select s výrazem Case.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2)) GO insert into dbo.Customer Values ( 1,'Raza','M','PK'), (2,'Rita','John','US'), (3,'Sukhi','Singh',Null)
1) Můžete použít Název sloupce, u kterého chcete zkontrolovat hodnoty hned po Case, jak je uvedeno níže. Poté do tohoto sloupce zapište všechny podmínky a nakonec použijte End jako NewColumnName
Select FName, LName, CountryShortName, Case CountryShortName When 'Pk' Then 'Pakistan' When 'US' Then 'United States of America' When 'IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Jak používat Case Statement v SQL Server – SQL Server / Výukový program TSQL |
Pokud nechcete používat Else část, můžete ji odstranit, ale v případě, že budete mít hodnotu a nebude odpovídat vašim podmínkám, vrátí Null. V mém případě:Pokud hodnota neodpovídá mým podmínkám, chtěl bych pomocí části Else zobrazit jako „Neposkytováno“.
2) Nepoužívejte název sloupce hned za klíčovým slovem Case Můžete také napsat prohlášení o případu, jak je uvedeno níže. V níže uvedeném příkladu jsme nezapsali název sloupce hned za Case. V tomto případě musíme zadat sloupec po každém When. Tento způsob zápisu se používá, když chcete zkontrolovat podmínky pro více sloupců nebo rozsah hodnot.
Select FName, LName, CountryShortName, Case When CountryShortName='Pk' Then 'Pakistan' When CountryShortName='US' Then 'United States of America' When CountryShortName='IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Jak používat Case Statement pro podmíněné formátování v dotazu SQL – SQL Server / Výukový program TSQL |