1

Sqlサーバーに次のタイプのデータがあります:-

Field         Value   Month

Administrative  5   November
Counteracting   7   November
District1       9   November
District2       6   November
Administrative  1   December
Counteracting   2   December
District1       3   December
District2       4   December
Administrative  9   January
Counteracting   8   January
District1       5   January
District2       6   January

ここでの問題は、このデータを次の形式で表示する方法を理解できないことです:-

Field         November   December   January

Administrative  5          1          9
Counteracting   7          2          8  
District1       9          3          5
District2       6          4          6
4

3 に答える 3

4

あなたがやろうとしているPIVOTのはデータです。これを実行するにはいくつかの方法があります。事前に値がわかっている場合は、値をハードコーディングできます。

CASE次のステートメントで集計関数を使用できます。

select field,
  sum(case when month ='November' then value end) November,
  sum(case when month ='December' then value end) December,
  sum(case when month ='January' then value end) January,
  etc
from yourtable
group by field

デモで SQL Fiddle を参照してください

SQL Server 2005 以降では、次のPIVOT関数を使用できます。

select field, November, December, January
from
(
  select field,
    value, month
  from yourtable
) src
pivot
(
  sum(value)
  for month in (November, December, January, etc)
) piv

デモで SQL Fiddle を参照してください

列に変換する値の数が不明な場合は、動的 SQL を使用してデータをピボットできます。

于 2013-01-02T21:48:26.217 に答える
0

これは典型的なピボットの問題です。SQL Server PIVOT ステートメントを確認してください: http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

それはあなたの問題を解決します。

于 2013-01-02T21:49:54.333 に答える
0

ピボットを使用する必要があります。例を確認してください:

http://blogs.msdn.com/b/spike/archive/2009/03/03/pivot-tables-in-sql-server-a-simple-sample.aspx

于 2013-01-02T21:50:12.653 に答える