1

TRANSFORM ステートメントを使用してクロス集計クエリを作成する方法に関する MSDN ページを読んだ人はいますか?

http://msdn.microsoft.com/en-us/library/office/bb208956(v=office.12).aspx

次のアサーションが含まれていますが、コード サンプルではサポートされていません。

データが存在しない固定値を含めて、追加の列を作成することもできます。

はい、既存のリストから列見出しの順序が固定されたピボット テーブルを作成したいと考えています。簡略化された SQL クエリを次に示します。

    TRANSFORM SUM(tblData.Losses) を TotalLosses として
    SELECT tblData.LossType
    FROM tblData
    GROUP BY tblData.Region
    PIVOT tblData.Year;

表にない地域名を追加し、地域を特定の順序で表示したいと考えています。はい、リージョン リスト テーブルを作成して左結合することはできますが、それによって任意の順序が強制されることはありません。クロス集計クエリでは、常に列が左から右のアルファベット順に並べ替えられます。

また、データが存在しない任意の固定値を追加したいだけかもしれません。

MSDN の情報は次のとおりです。

構文

TRANSFORM aggfunction     selectstatement     PIVOTピボットフィールド[IN (1 [ ,値 2 [, …]])]

TRANSFORM ステートメントには次の部分があります。

  • aggfunction : 選択したデータを操作する SQL 集計関数。
  • selectstatement : SELECT ステートメント。
  • pivotfield : クエリの結果セットで列見出しを作成するために使用するフィールドまたは式。
  • value1value2 : 列見出しの作成に使用される固定値。

...あとは、教科書のデータから平凡なピボット テーブルを作成するだけです。

だから、私の質問は:

実際に固定値を使用して列見出しを作成したことのある人はいますか?

SQL のサンプルが役立ちます。


これは、公開されている Microsoft Access SQL の構文に関する質問です。

すべてをハードコーディングすることにより、TRANSFORM ステートメントが行うことを行う ANSI SQL はありますか?」または、メインフレーム上の Postgres でこれがより簡単になることを指摘します。

4

3 に答える 3

2

これを試して:

TRANSFORM Sum(tblData.Losses) AS TotalLosses
SELECT tblData.Region, tblData.LossType
FROM tblData
GROUP BY tblData.Region, tblData.LossType
PIVOT tblData.Year In ('2001','2000');

キーは、PIVOT ステートメントの年のリストです。日時データ型の場合、' を # に置き換える必要がある場合があります。

于 2012-09-19T17:38:45.293 に答える