Scenario:
U werkt als SQL Server-ontwikkelaar, u moet een query uitvoeren op de dbo.Customer-tabel met de kolom CountryShortName met landafkortingen. U wilt een andere kolom met de volledige naam van het land genereren door kolomwaarden van CountryShortName te gebruiken. Hoe zou je dat doen?Oplossing:
U kunt Case-expressies gebruiken om deze nieuwe kolom te genereren, afhankelijk van de waarde van CountryShortName. In ons voorbeeld gebruiken we alleen enkele kolommen, maar u kunt meerdere kolommen gebruiken en controleren op meerdere voorwaarden.Laten we een dbo.Customer-tabel maken met enkele voorbeeldgegevens en dan zullen we onze Select-instructie schrijven met Case-expressie.
>
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) U kunt Kolomnaam waarvan u de waarden wilt controleren direct na Case gebruiken, zoals hieronder weergegeven. Schrijf vervolgens alle voorwaarden in die kolom en gebruik tenslotte End as 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
Hoe gebruik je Case Statement in SQL Server - SQL Server / TSQL-zelfstudie |
Als u het Else-gedeelte niet wilt gebruiken, kunt u dat verwijderen, maar in het geval dat u waarde heeft en het niet overeenkomt met uw voorwaarden, wordt Null geretourneerd. In mijn geval, als de waarde niet overeenkomt met mijn voorwaarden, zou ik willen weergeven als "Niet verstrekt" door het gedeelte Else te gebruiken.
2) Gebruik Kolomnaam niet direct na Hoofdletterzoekwoord U kunt de casusverklaring ook schrijven zoals hieronder weergegeven. In het onderstaande voorbeeld hebben we Kolomnaam niet direct na Case geschreven. In dit geval moeten we kolom na elke Wanneer typen. Deze manier van schrijven wordt gebruikt wanneer u voorwaarden voor meerdere kolommen of waardenbereiken wilt controleren.
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
Hoofdlettergebruik gebruiken voor voorwaardelijke opmaak in SQL-query - SQL Server / TSQL-zelfstudie |