0

私はこのようなテーブルを持っています:

|| id  | year |  userCode  |  jan  |  feb  |  ... ... ... |  dec  ||

列jan-decは、その中に値(お金)データを保持します。私はそれをこのように見せたい:

||id  |  year  |  month  |  userCode  |  value ||

これが重要です。同じ月に同じuserCodeに対して2つの値を持つことができるので(両方が必要です)、SUMだけを使用することはできません。何か案は?

前もって感謝します!

4

3 に答える 3

2

UNPIVOTSQL Server 2005以降では、データを列から行に変換する関数を使用してこれを簡単に行うことができます。

コードは次のようになります。

select id, year, month, usercode, value
from yourtable
unpivot
(
  value
  for month in (Jan, Feb, Mar, Apr, May,
                Jun, Jul, Aug, Sep, Oct,
                Nov, Dec)
) unpiv

行にデータが入ると、必要な任意のタイプの集計を実行できます。

于 2013-02-14T19:19:39.623 に答える
0

あなたは2つのテーブルでそれを行うことができます...

年と月を含む1つのテーブル

YearMonths

|| Id | 年| 月| UserCode ||

YearMonthsValues

|| Id | YearMonthId | 値||

于 2013-02-14T18:57:53.857 に答える
0

あなたはすべての組合でこれを行うことができます:

select year, month, userCode, jan, 'jan' as which as value from t union all
select year, month, userCode, feb, 'feb' as which as value from t union all
. . .
select year, month, userCode, dec, 'dec' as which as value from t

whichデータがどこから来たのかがわかるように、列を追加しました。

于 2013-02-14T18:58:14.370 に答える