L’istruzione CASE di SQL Server è equivalente all’istruzione IF-THEN in Excel.
L’istruzione CASE viene utilizzata per implementare la logica in cui si desidera impostare il valore di una colonna in base ai valori in altre colonne.
L’istruzione CASE di SQL Server è costituita da almeno una coppia di istruzioni WHEN e THEN. L’istruzione WHEN specifica la condizione da testare. L’istruzione THEN specifica l’azione se la condizione WHEN restituisce TRUE.,
L’istruzione ELSE è facoltativa e viene eseguita quando nessuna delle condizioni WHEN restituisce true. L’istruzione CASE termina con una parola chiave END.
In questo articolo, daremo un’occhiata a una serie di diversi esempi della dichiarazione del CASO. Ma prima di farlo, creeremo alcuni dati fittizi con cui lavorare.,/td>
Lo script di cui sopra ha creato un database fittizio chiamato ShowRoom con una Tabella, denominata Auto., La tabella Cars ha sette colonne: id, nome, azienda, potenza, colore, modello e condizione.
Ora inseriamo alcuni dati fittizi nella tabella Cars., Eseguire il seguente script:
verificare come il nostro set di dati sembra, eseguire il seguente script:
1
|
SELEZIONARE * DA Auto
|
L’output simile a questo:
Si può vedere che la condizione di colonna contiene una X in ogni riga del momento., Imposteremo il valore della colonna condition, a seconda della colonna model, utilizzando l’istruzione CASE in modo da poter vedere chiaramente cosa sta succedendo.,
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., Inizia con la parola chiave CASE seguita dalla parola chiave WHEN e quindi dalla CONDIZIONE.
La condizione può essere qualsiasi espressione SQL Server valida che restituisce un valore booleano. Ad esempio, la condizione può essere model > 2000, la clausola THEN viene utilizzata dopo la CONDIZIONE. Se la CONDIZIONE restituisce true, il valore che segue la clausola THEN viene memorizzato in columnX. Else, il valore dopo la clausola ELSE, verrà memorizzato anche in columnX. L’istruzione CASE di SQL Server termina con la clausola END.,
Esempi di istruzione CASE
Vediamo ora l’istruzione CASE in azione.
In una sezione precedente, abbiamo creato una tabella denominata Cars all’interno del database dello ShowRoom.
La colonna condizione aveva il valore X per tutte le righe. Useremo l’istruzione CASE di SQL Server per impostare il valore della colonna condition su ” New “se la colonna model ha un valore maggiore di 2000, altrimenti il valore per la colonna condition verrà impostato su “Old”.,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., L’output dello script sopra è simile a questo:
Puoi vedere che il valore di X nella colonna delle condizioni è stato sostituito da “Nuovo” e “Vecchio” a seconda del modello dell’auto.
Condizioni multiple nell’istruzione CASE
È possibile valutare più condizioni nell’istruzione CASE.,
Scriviamo un’istruzione CASE di SQL Server che imposta il valore della colonna condition su “New” se il valore nella colonna model è maggiore di 2010, su “Average” se il valore nella colonna model è maggiore di 2000 e su ” Old ” se il valore nella colonna model è maggiore di 1990.,
L’output dello script di sopra di simile a questo:
lo script di cui sopra, abbiamo ricevuto tre diversi valori nella colonna condizione in base al valore della colonna modello.,
Tuttavia, nello script precedente, le condizioni si sovrappongono come. il modello con un valore maggiore di 2010 ha anche un valore maggiore di 2000 e 1990. Un modo migliore per implementare più condizioni è usare operatori logici come AND, OR, NOT, ecc.,N modello > 2010, la ‘Nuova’
L’output dello script sopra assomiglia a questo:
Si può anche valutare di più condizioni da diverse colonne utilizzando SQL Server in CASO di dichiarazione., Nell’esempio seguente, assegneremo il valore di “Nuovo bianco” alla colonna condizione in cui il modello è maggiore di 2010 e il colore è bianco.,GALLINA ‘Nuovo’
L’output simile a questo:
Si può vedere dalla riga 5 che dal momento che il colore è il bianco e il modello è maggiore rispetto a quello del 2010, valore per la condizione della colonna è stato impostato su “Nuovo Nero” in uscita.,
Utilizzo dell’istruzione CASE GROUP BY with SQL Server
L’istruzione CASE può essere utilizzata anche in combinazione con l’istruzione GROUP BY per applicare funzioni aggregate.,v id=”1dd7e33b85″>
Nello script precedente abbiamo utilizzare la funzione di aggregazione COUNT con l’istruzione CASE.,
L’istruzione CASE di SQL Server imposta il valore della colonna condition su “New” o “Old”. All’interno della clausola GROUP BY, specifichiamo che il conteggio corrispondente per “New” viene incrementato di 1, ogni volta che viene rilevato un valore del modello maggiore di 2000. La sezione Else significa che aumentiamo il conteggio per “Vecchio” di 1 se il valore del modello è 2000 o meno. L’output dello script sopra è simile a questo:
Poiché il nostro set di dati ha cinque veicoli con un valore per ‘model’ superiore a 2000, puoi vedere un 5 nella colonna count per i veicoli “Nuovi”., Allo stesso modo, avevamo 5 vecchi veicoli e quindi possiamo vedere 5 per la colonna di conteggio dei veicoli “vecchi”.
Allo stesso modo, possiamo RAGGRUPPARE PER più di due valori., 2000, ‘Media’
lo script di cui sopra, abbiamo raggruppato i dati in tre categorie: i “Nuovi”, “Medio” e “Vecchio”.,
L’output è simile a questo:
Puoi vedere il conteggio delle auto “Nuove”, “Medie” e “Vecchie”.
Conclusione
L’istruzione CASE è utile quando si desidera implementare la logica IF-THEN in SQL Server. In questo articolo, abbiamo visto quale istruzione CASE è insieme alla sua sintassi. Abbiamo anche visto diversi esempi di CASE statement insieme al suo utilizzo con la clausola GROUP BY.,
Altri grandi articoli da Ben
- Comprensione della cache del piano di query di SQL Server
- Qual è la differenza tra indici cluster e non cluster in SQL Server?
- Come utilizzare le funzioni finestra
- l’Interrogazione di dati utilizzando SQL Server in CASO di dichiarazione
- Autore
- Post Recenti
Visualizza tutti i messaggi di Ben Richardson
- Alimentazione BI: Grafici a Cascata e Combinati Immagini – gennaio 19, 2021
- Alimentazione BI: formattazione Condizionale e i dati di colori in azione – 14 gennaio 2021
- Alimentazione BI: Importazione di dati da SQL Server e MySQL – 12 gennaio 2021