-1

これは私の最初のテーブルt1です:

-----------------------------
| code | month      | value |
-----------------------------
| 101  |august      | 1     |
| 101  |September   | 3     |
| 101  |November    | 7     |
| 202  |august      | 5     |
| 202  |September   | 6     |
| 202  |November    | 9     |
| 303  |august      | 9     |
| 303  |September   | 3     |
-----------------------------

2番目のテーブルt2(ビューテーブル)を次のように作成したい

------------------------------------------
| code | month      | value | value_begin |
------------------------------------------
| 101  |august      | 1     |0            |
| 101  |September   | 3     |1            |
| 101  |November    | 7     |4 (3+1)      |
| 202  |august      | 5     |0            |
| 202  |September   | 6     |5            |
| 202  |November    | 2     |11 (6+5)     |
| 303  |august      | 9     |0            |
| 303  |september   | 3     |9            |
-------------------------------------------

value_begin は合計値であり、行の上の value_begin は、行 101-November のように、value_begin は値 3 (上) と value_begin 1 (上) から 4 です。

ビューで2番目のテーブルt2を作成することは可能ですか?

4

1 に答える 1

0

SQLFIddel デモはこちら

以下は、デモに表示されたビューです。

Create View V1 as
select T1.code,T1.Month,T1.Value,
       sum(IFNULL(T2.value,0)) as value_begin
  from Table1 T1
 left join Table1 T2
    On T1.code = T2.code 
   and month(str_to_date(substring(T1.month,1,3),'%b')) > month(str_to_date(substring(T2.month,1,3),'%b'))
Group by T1.code,T1.Month,T1.Value 
Order by t1.code,month(str_to_date(substring(T1.month,1,3),'%b'))
;

変数の追加は許可されていないため、以前のアプローチは役に立ちませんでした。また、可能ではないビューで変数が必要でした。ここで、テーブルのロジックを使用して状況を克服しました。お役に立てれば。クエリがあれば元に戻してください。


注:計算の検証を確認するために、デモにいくつかの行を追加しました。

于 2013-10-03T07:01:33.773 に答える