Scenario:
Stai lavorando come sviluppatore di SQL Server, devi interrogare la tabella dbo.Customer che ha la colonna CountryShortName con le abbreviazioni del paese. Si desidera generare altre colonne con il nome completo Paese utilizzando i valori di colonna CountryShortName. Come lo faresti?Soluzione:
È possibile utilizzare le espressioni Case per generare questa nuova colonna a seconda del valore di CountryShortName. Nel nostro esempio utilizziamo solo colonne singole, ma puoi utilizzare più colonne e verificare la presenza di più condizioni.Creiamo la tabella dbo.Customer con alcuni dati di esempio e quindi scriveremo la nostra istruzione Select con l'espressione 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) È possibile utilizzare Nome colonna per il quale si desidera controllare i valori subito dopo Caso, come mostrato di seguito. Quindi scrivi tutte le condizioni su quella colonna e infine usa 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
Come utilizzare l'istruzione Case in SQL Server - Tutorial SQL Server/TSQL |
Se non ti piace usare la parte Altro, puoi rimuoverla ma nel caso in cui avrai valore e non corrisponderà alle tue condizioni, restituirà Null. Nel mio caso, se il valore non corrisponde alle mie condizioni, vorrei essere visualizzato come "Non fornito" utilizzando Else part.
2) Non utilizzare il nome della colonna subito dopo la parola chiave Case Puoi anche scrivere la dichiarazione del caso come mostrato di seguito. Nell'esempio seguente, non abbiamo scritto il nome della colonna subito dopo il caso. In questo caso dobbiamo digitare colonna dopo ogni Quando. Questo modo di scrivere viene utilizzato quando si desidera controllare le condizioni per più colonne o intervalli di valori.
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
Come utilizzare l'istruzione Case per la formattazione condizionale in query SQL - Tutorial SQL Server/TSQL |