シナリオ:
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チュートリアル |