SQLShack (Svenska)

SQL Server CASE-satsen motsvarar if-sedan-satsen i Excel.

KUNDCASESATSEN används för att implementera logiken där du vill ange värdet för en kolumn beroende på värdena i andra kolumner.

SQL Server-kundcase-Satsen består av minst ett par när och sedan uttalanden. När-satsen anger vilket villkor som ska testas. Satsen anger åtgärden om när villkoret returnerar sant.,

else-satsen är valfri och körs när ingen av villkoren returneras sant. KUNDCASESATSEN avslutas med ett slut sökord.

i den här artikeln kommer vi att ta en titt på ett antal olika exempel på KUNDCASEFÖRKLARINGEN. Men innan vi gör det, skapar vi några dummy data att arbeta med.,/td>

skapa Databas ShowRoom;
GO
använd ShowRoom;
skapa TABELLBILAR
(
id INT,
namn varchar(50) inte NULL,
företaget varchar(50) inte NULL,
power int not null,
Color varchar(50) not null,
model int not null,
Condition Varchar(50) not null
)

skriptet ovan har skapat en dummy databas som heter showroom med en tabell i den som heter cars. – herr talman!, Tabellen bilar har sju kolumner: id, namn, företag, makt, färg, modell, och skick.

nu sätter vi in några dummy data i tabellen bilar., Utför följande skript:

låt oss kontrollera hur vår dataset ser ut, kör följande skript:

1
välj * från bilar

utgången ser ut så här:

Du kan se att tillståndskolumnen innehåller ett X i varje rad på skärmen.ett ögonblick., Vi kommer att ställa in värdet på tillståndskolumnen, beroende på modellkolumnen, med hjälp av KUNDCASESATSEN så att du tydligt kan se vad som händer.,

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., Det börjar med KUNDCASEORDET följt av när nyckelordet och sedan villkoret.

villkoret kan vara ett giltigt SQL Server-uttryck som returnerar ett booleskt värde. Till exempel kan villkoret vara modell > 2000, då klausulen används efter villkoret. Om villkoret returnerar sant lagras värdet som följer sedan-klausulen i columnX. Annars kommer värdet efter else-klausulen också att lagras i columnX. Satsen SQL Server-kundcase avslutas med slutklausulen.,

exempel på KUNDCASEFÖRKLARINGAR

låt oss nu se KUNDCASEFÖRKLARINGEN i aktion.

i ett tidigare avsnitt skapade vi en tabell med namnet Cars i ShowRoom-databasen.

kolumnen skick hade värdet X för alla rader. Vi kommer att använda SQL Server CASE-satsen för att ställa in värdet på kolumnen skick till ”ny” om kolumnen modell har ett värde som är större än 2000, annars kommer värdet för kolumnen skick att ställas in på ”gammal”.,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., Utskriften av skriptet ovan ser ut så här:

Du kan se att värdet på X i kolumnen skick har ersatts av ”ny” och ”gammal” beroende på bilens modell.

flera villkor i KUNDCASEPOLICYN

Du kan utvärdera flera villkor i KUNDCASEPOLICYN.,

låt oss skriva en SQL Server-kundcase-sats som anger värdet för tillståndskolumnen till ” ny ”om värdet i kolumnen modell är större än 2010, till ”genomsnitt” om värdet i kolumnen modell är större än 2000 och till ”Gammal” om värdet i kolumnen modell är större än 1990.,

välj namn,
modell,
fall när Modell> 2010 då ’Ny’
när Modell> 2000 då ’genomsnitt’
när Modell> 1990 då ’gammal’
’gammal’ slut som skick
från bilar

utskriften av skriptet ovan ser ut så här:

i skriptet ovan tilldelade vi tre olika värden till till tillståndskolumnen beroende på värdet i modellkolumnen.,

i ovanstående skript överlappar dock villkoren som. modellen med ett värde större än 2010 har också ett värde större än 2000 och 1990. Ett bättre sätt att genomföra flera villkor är att använda logiska operatörer som och, eller, inte, etc.,N modell > 2010 då ’Ny’

när Modell > 2000 och modell <2010 då ’genomsnitt’
när Modell > 1990 och modell <2000 sedan ’gammal’
else ’Old’ end as condition
från bilar

utgången av skriptet ovan ser ut så här:

Vi kan också utvärdera flera villkor från olika kolumner med hjälp av SQL Server-kundcaset., I följande exempel kommer vi att tilldela värdet av ”ny vit” till kolumnen skick där modellen är större än 2010 och färgen är vit.,HEN ’New’

när Modell > 2000 och modell <2010 då ’Average’
när Modell > 1990 och modell <2000 då ’Old’
else ’Old’ END AS condition
från bilar

utgången ser ut så här:

Du kan se från rad 5 att eftersom färgen är vit och modellen är större än 2010 har värdet för tillståndskolumnen ställts in på ”New White” i utgången.,

använda grupp BY med SQL Server CASE-sats

KUNDCASESATSEN kan också användas tillsammans med grupp by-sats för att tillämpa aggregerade funktioner.,v id=”1dd7e33b85″>

1
2
3
4
5
6
7
välj
fall när Modell > 2000 sedan ’new’
else ’old’ end as condition,
count(1) as count
from cars
group by case when model > 2000 then ’new’
else ’Old’ End

i skriptet ovan använder vi funktionen count aggregate med kundcasesatsen.,

satsen SQL Server-kundcase anger värdet för kolumnen skick till ”ny” eller ”gammal”. Inom gruppen efter klausul anger vi att motsvarande antal för” nytt ” ökas med 1, när ett modellvärde på större än 2000 påträffas. Den andra delen innebär att vi ökar räkningen för ”gammal” med 1 om värdet på modellen är 2000 eller mindre. Utgången av skriptet ovan ser ut så här:

eftersom vår dataset har fem fordon med ett värde för ’modell’ som är större än 2000, kan du se en 5 I räkna kolumnen för ”nya” fordon., På samma sätt hade vi 5 gamla fordon och därmed kan vi se 5 för räkna kolumnen ”gamla” fordon.

På samma sätt kan vi gruppera med mer än två värden., 2000 sedan ’Average’

när Modell> 1990 sedan ’Old’
else ’Old’ END AS condition,
COUNT(1) som count
från bilar
grupp efter fall när Modell> 2010 då ’Ny’
när Modell> 2000 sedan ’average’
när Modell> 1990 sedan ’old’
else ’Old’ end

i skriptet ovan grupperade vi data i tre kategorier: ”New”, ”average” och ”gammal”.,

utgången ser ut så här:

Du kan se räkningen för ”nya”, ”genomsnittliga” och ”gamla” skick bilar.

slutsats

KUNDCASESATSEN är till nytta när du vill implementera IF-då logik i SQL Server. I den här artikeln såg vi vilket fall uttalande tillsammans med dess syntax. Vi såg också olika exempel på FALLUTLÅTANDE tillsammans med dess användning med gruppen efter klausul.,

andra bra artiklar från Ben

  • förstå SQL Server query plan cache
  • vad är skillnaden mellan klustrade och icke-klustrade index i SQL Server?
  • hur man använder fönsterfunktioner
  • frågar data med SQL Server CASE statement
  • författare
  • Senaste inlägg

ben Richardson driver Acuity utbildning en ledande leverantör av SQL utbildning Storbritannien., Det erbjuder ett komplett utbud av SQL utbildning från inledande kurser till avancerad administration och data warehouse utbildning – se här för mer information. Acuity har kontor i London och Guildford, Surrey., Han bloggar också ibland på Acuity blogg
Visa alla inlägg av Ben Richardson

Senaste inlägg av Ben Richardson (se alla)
  • Power BI: vattenfall diagram och kombinerade grafik – januari 19, 2021
  • Power BI: Villkorlig formatering och datafärger i aktion – januari 14, 2021
  • Power BI: importera data från SQL Server och MySQL – 12 januari 2021

Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *