Cenário:
Você está trabalhando como desenvolvedor do SQL Server, precisa consultar a tabela dbo.Customer que possui a coluna CountryShortName com abreviações de países. Você deseja gerar outras colunas com o nome completo do país usando os valores da coluna CountryShortName. Como você faria isso?Solução:
Você pode usar expressões Case para gerar essa nova coluna dependendo do valor de CountryShortName. Em nosso exemplo, estamos usando apenas colunas únicas, mas você pode usar várias colunas e verificar várias condições.Vamos criar a tabela dbo.Customer com alguns dados de exemplo e, em seguida, escreveremos nossa instrução Select com a expressão 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) Você pode usar o nome da coluna para a qual deseja verificar os valores logo após o caso, conforme mostrado abaixo. Em seguida, escreva todas as condições nessa coluna e, finalmente, use End como 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
Como usar a instrução Case no SQL Server - Tutorial SQL Server / TSQL |
Se você não gosta de usar Else part, você pode removê-lo, mas caso você tenha valor e não corresponda às suas condições, ele retornará Null. No meu caso, se o valor não corresponder às minhas condições, gostaria de mostrar como "Não fornecido" usando a parte Else.
2) Não use o nome da coluna logo após a palavra-chave Case Você também pode escrever a instrução case conforme mostrado abaixo. No exemplo abaixo, não escrevemos Column Name logo após Case. Nesse caso, temos que digitar column após cada When. Essa forma de escrita é usada quando você deseja verificar as condições para várias colunas ou intervalo de valores.
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
Como usar a instrução Case para formatação condicional na consulta SQL - SQL Server / Tutorial TSQL |