Scenarie:
Du arbejder som SQL Server-udvikler, du skal forespørge på dbo. Kundetabel, der har CountryShortName-kolonnen med landeforkortelser. Du vil generere en anden kolonne med Country Full name ved at bruge CountryShortName kolonneværdier. Hvordan ville du gøre det?Løsning:
Du kan bruge Kasusudtryk til at generere denne nye kolonne afhængigt af værdien af CountryShortName. I vores eksempel bruger vi kun enkelte kolonner, men du kan bruge flere kolonner og kontrollere for flere betingelser.Lad os oprette dbo.Kundetabel med nogle eksempeldata, og så skriver vi vores Select-udsagn med Case-udtryk.
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) Du kan bruge Kolonnenavn, som du vil kontrollere værdierne for lige efter Case som vist nedenfor. Skriv derefter alle betingelserne i den kolonne, og brug endelig End som 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
Sådan bruges Case Statement i SQL Server - SQL Server / TSQL Tutorial |
Hvis du ikke kan lide at bruge Else-delen, kan du fjerne den, men i tilfælde af at du vil have værdi, og den ikke matcher dine betingelser, vil den returnere Null. I mit tilfælde, hvis værdien ikke stemmer overens med mine betingelser, vil jeg gerne vise som "Ikke angivet" ved at bruge Anden del.
2) Brug ikke kolonnenavn lige efter sagsøgeord Du kan også skrive sagsfremstillingen som vist nedenfor. I eksemplet nedenfor skrev vi ikke kolonnenavn lige efter sag. I dette tilfælde skal vi skrive kolonne efter hvert Hvornår. Denne måde at skrive på bruges, når du vil kontrollere betingelser for flere kolonner eller værdiområde.
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
Sådan bruger du Case Statement til betinget formatering i SQL Query - SQL Server / TSQL Tutorial |