シナリオ:
SQL Server開発者として作業している場合は、国の略語を含むCountryShortName列を持つdbo.Customerテーブルをクエリする必要があります。 CountryShortName列の値を使用して、CountryFullnameで別の列を生成するとします。どのようにそれをしますか?解決策:
ユースケース式を使用して、CountryShortNameの値に応じてこの新しい列を生成できます。この例では、単一の列のみを使用していますが、複数の列を使用して複数の条件を確認できます。サンプルデータを使用してdbo.Customerテーブルを作成し、Case式を使用してSelectステートメントを記述します。
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)以下に示すように、Caseの直後に値を確認したい列名を使用できます。次に、その列にすべての条件を書き込み、最後にEndを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
SQLServerでCaseステートメントを使用する方法-SQLServer/TSQLチュートリアル |
Elseパーツを使用したくない場合は、それを削除できますが、値があり、条件と一致しない場合は、Nullを返します。私の場合、値が条件と一致しない場合は、Else部分を使用して「提供されていません」と表示したいと思います。
2)Caseキーワードの直後に列名を使用しないでください> 以下に示すように、caseステートメントを記述することもできます。以下の例では、Caseの直後に列名を記述していません。この場合、Whenごとにcolumnと入力する必要があります。この記述方法は、複数の列または値の範囲の条件を確認する場合に使用されます。
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
SQLクエリで条件付き書式を設定するためのCaseステートメントの使用方法-SQLServer/TSQLチュートリアル |