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

TSQLPIVOTの複数の列

    データの複数の列をピボットしたいので、最初にresultのピボットを解除することをお勧めします 、score およびgrade 列があるため、複数の列はありませんが、複数の行があります。

    SQL Serverのバージョンに応じて、UNPIVOT関数またはCROSSAPPLYを使用できます。データのピボットを解除する構文は次のようになります。

    select ratio, col, value
    from GRAND_TOTALS
    cross apply
    (
      select 'result', cast(result as varchar(10)) union all
      select 'score', cast(score as varchar(10)) union all
      select 'grade', grade
    ) c(col, value)
    

    SQL FiddlewithDemoを参照してください。データのピボットが解除されたら、PIVOT関数を適用できます。

    select ratio = col,
      [current ratio], [gearing ratio], [performance ratio], total
    from
    (
      select ratio, col, value
      from GRAND_TOTALS
      cross apply
      (
        select 'result', cast(result as varchar(10)) union all
        select 'score', cast(score as varchar(10)) union all
        select 'grade', grade
      ) c(col, value)
    ) d
    pivot
    (
      max(value)
      for ratio in ([current ratio], [gearing ratio], [performance ratio], total)
    ) piv;
    

    SQL FiddlewithDemoを参照してください。これにより、結果が得られます:

    |  RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO |     TOTAL |
    |--------|---------------|---------------|-------------------|-----------|
    |  grade |          Good |          Good |      Satisfactory |      Good |
    | result |       1.29400 |       0.33840 |           0.04270 |    (null) |
    |  score |      60.00000 |      70.00000 |          50.00000 | 180.00000 |
    



    1. MySQLでシーケンスを作成する方法

    2. PostgreSQLでタイムゾーンオフセットを使用して現在の日付と時刻を取得する方法

    3. ニージャークパフォーマンスチューニング:SSDを追加するだけ

    4. SQL Serverが実行されているオペレーティングシステムを確認する(T-SQLの例)