sql >> データベース >  >> RDS >> Sqlserver

データ行として必要な T-SQL ピボット/アンピボット (転置) 列ヘッダー

    あなたがしているいくつかの紛らわしいことがあります。

    まず、通常、複数の列のピボットを解除します。現在、1 つの列のピボットを解除しようとしていますが、列の名前を変更するためだけにそうしているように見えますか?

    次に、データを 2 回集計しています。PIVOT は SUM() を使用して集計を処理できるはずです。 .

    第 3 に、列ヘッダーを行として必要とする理由が明確ではありません。列ヘッダーを何と呼びたいですか?

    サンプル データに基づいて、PIVOT 関数を適用するだけで済みます。

    select 'TotalRecords' TotalRecords, 
      [2012],
      [2013],
      [All]
    from tbleirstatisticsoverviewsummary
    pivot
    (
      sum(totalrecords)
      for FiscalYear IN ([2012],[2013],[ALL])
    ) p;
    

    SQL Fiddle with Demo を参照してください。 .次に、列ヘッダーを含む行が必要な場合は、UNION ALL を使用できます:

    select 'colname' col1, 
      2012 col2, 
      2013 col3, 
      'All' col4
    union all
    select 'TotalRecords' TotalRecords, 
      [2012],
      [2013],
      [All] = cast([all] as varchar(10))
    from tbleirstatisticsoverviewsummary
    pivot
    (
      sum(totalrecords)
      for FiscalYear IN ([2012],[2013],[ALL])
    ) p;
    

    SQL Fiddle with Demo を参照してください。




    1. SQLテーブルで重複する値を見つける方法

    2. ストアドプロシージャでテーブル名として変数を使用できないのはなぜですか?

    3. C#Windows Mobile 6.5アプリをPostgresデータベースに接続するにはどうすればよいですか?

    4. SQLを使用して空のレコードを取得する