例
PIVOT句はSQLServer(Transact-SQL)で使用できます。
見てみましょう。例:次のデータを含むemployeesテーブルがある場合:
employee_number | last_name | first_name | salary | dept_id |
---|---|---|---|---|
12009 | サザーランド | バーバラ | 54000 | 45 |
34974 | Yates | Fred | 80000 | 45 |
34987 | エリクソン | ニール | 42000 | 45 |
45001 | パーカー | サリー | 57500 | 30 |
75623 | ゲート | スティーブ | 65000 | 30 |
そして、クロスタブラティを作成する次のSQLステートメントを実行しましたPIVOT句を使用したクエリの場合:
次の結果が返されます:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |
この例では、dept_id30とdept_id45の合計給与を表示するピボットテーブルを作成します。結果は1行に表示され、2つの部門が表示されます。それぞれが独自の列にあります。
次に、PIVOT句を分解して、その仕組みを説明しましょう。
クロス集計結果で列を指定する
まず、クロス集計結果に含めるフィールドを指定します。この例では、ピボットテーブルの最初の列としてリテラル値「TotalSalary」を含めます。そして、dept_id 30用に1つの列を作成し、dept_id 45用に2番目の列を作成します。これにより、ピボットテーブルに3つの列が作成されます。
SELECT "TotalSalary" AS TotalSalaryByDept, ,
ソースを指定しますテーブルデータ
次に、ピボットテーブルのソースデータを返すSELECTステートメントを指定する必要があります。
この例では、dept_idとsalaryの値をから返します。従業員テーブル:
(SELECT dept_id, salary FROM employees) AS SourceTable
ソースクエリのエイリアスを指定する必要があります。この例では、クエリのエイリアスをSourceTableとして指定しています。
集計関数の指定
次に、クロス集計クエリを作成するときに使用する集計関数を指定する必要があります。 SUM、COUNT、MIN、MAX、AVG関数などの任意の集計を使用できます。
この例では、SUM関数を使用します。これにより、給与値が合計されます。
PIVOT(SUM(salary)
ピボット値の指定
最後に、結果に含めるピボット値を指定する必要があります。 。これらは、クロス集計クエリの列見出しとして使用されます。
この例では、30と45のdept_id値のみを返します。これらの値は、ピボットの列見出しになります。テーブル。また、これらの値はdept_id値の有限リストであり、すべての可能な値が含まれているとは限らないことに注意してください。
FOR dept_id IN (, )
これで、すべてをまとめると、次のピボットテーブルを取得します。
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |