印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
SQL Server
Microsoft SQL Server 2000
SDK ドキュメント
Transact-SQL リファレンス
 COALESCE
Transact-SQL リファレンス
COALESCE

引数の中から、最初の NULL でない式を返します。

構文

COALESCE ( expression [ ,...n ] )

引数

expression

任意のデータ型の式です。

n

複数の式を指定できることを示すプレースホルダです。すべての式は、同一の型であるか、暗黙の変換によって同一の型になる必要があります。

戻り値の型

expression と同一の値を返します。

解説

すべての引数が NULL の場合、COALESCE は NULL を返します。

COALESCE(expression1,...n) は、次の CASE 関数に相当します。

CASE
   WHEN (expression1 IS NOT NULL) THEN expression1
   ...
   WHEN (expressionN IS NOT NULL) THEN expressionN
   ELSE NULL

この例では、従業員の年収に関する情報を hourly_wagesalarycommission という 3 つの列に含む wages テーブルを示しています。ただし、1 人の従業員が受け取れるのは 1 タイプの給料だけです。すべての従業員に支払われている給料の総額を算出するには、COALESCE 関数を使って hourly_wagesalary、および commission から NULL でない値だけを取り出します。

SET NOCOUNT ON
GO
USE master
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'wages')
   DROP TABLE wages
GO
CREATE TABLE wages
(
   emp_id      tinyint    identity,
   hourly_wage   decimal   NULL,
   salary      decimal    NULL,
   commission   decimal   NULL,
   num_sales   tinyint   NULL
)
GO
INSERT wages VALUES(10.00, NULL, NULL, NULL)
INSERT wages VALUES(20.00, NULL, NULL, NULL)
INSERT wages VALUES(30.00, NULL, NULL, NULL)
INSERT wages VALUES(40.00, NULL, NULL, NULL)
INSERT wages VALUES(NULL, 10000.00, NULL, NULL)
INSERT wages VALUES(NULL, 20000.00, NULL, NULL)
INSERT wages VALUES(NULL, 30000.00, NULL, NULL)
INSERT wages VALUES(NULL, 40000.00, NULL, NULL)
INSERT wages VALUES(NULL, NULL, 15000, 3)
INSERT wages VALUES(NULL, NULL, 25000, 2)
INSERT wages VALUES(NULL, NULL, 20000, 6)
INSERT wages VALUES(NULL, NULL, 14000, 4)
GO
SET NOCOUNT OFF
GO
SELECT CAST(COALESCE(hourly_wage * 40 * 52,
   salary,
   commission * num_sales) AS money) AS 'Total Salary'
FROM wages
GO

以下に結果セットを示します。

Total Salary
------------
20800.0000
41600.0000
62400.0000
83200.0000
10000.0000
20000.0000
30000.0000
40000.0000
45000.0000
50000.0000
120000.0000
56000.0000

(12 row(s) affected)

関連項目

CASE

システム関数

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker