2016-05-24 10 views
1

私はこのsqlのいくつかの条件を使って合計する方法は?

ID  Date  Value 
    --------------------------- 
    1001 31 01 14 2035.1 
    1002 31 01 14 1384.65 
    1003 31 01 14 1011.1 
    1004 31 01 14 1187.04 
    1001 28 02 14 2035.1 
    1002 28 02 14 1384.65 
    1003 28 02 14 1011.1 
    1004 28 02 14 1188.86 
    1001 31 03 14 2035.1 
    1002 31 03 14 1384.65 
    1003 31 03 14 1011.1 
    1004 31 03 14 1188.86 
    1001 30 04 14 2066.41 
    1002 30 04 14 1405.95 
    1003 30 04 14 1026.66 
    1004 30 04 14 1207.15 

のようなユーザーテーブルを持っていると私はこの

ID  Date  Value  Total 
    --------------------------------------- 
    1001 31 01 14 2035.1  2035.1 
    1002 31 01 14 1384.65 1384.65 
    1003 31 01 14 1011.1  1011.1 
    1004 31 01 14 1187.04 1187.04 
    1001 28 02 14 2035.1  4070.2 
    1002 28 02 14 1384.65 2769.3 
    1003 28 02 14 1011.1  2022.2 
    1004 28 02 14 1188.86 2375.9 
    1001 31 03 14 2035.1  6105.3 
    1002 31 03 14 1384.65 4153.95 
    1003 31 03 14 1011.1  3033.3 
    1004 31 03 14 1188.86 3564.76 
    1001 30 04 14 2066.41 8171.71 
    1002 30 04 14 1405.95 5180.61 
    1003 30 04 14 1026.66 4059.96 
    1004 30 04 14 1207.15 4771.91 

のように、このテーブルからの合計を作りたい私はIDを持って、最初の月の各IDのためにそれを書くべき合計の価値であり、そのIDの2番目の月には最初の月と2番目の月の値を加算する必要があります。このようにする必要があります。 SQLでこの集計を行うにはどうすればよいですか?

誰でも私の日を節約できますか?

+4

使用しているdbmsにタグを付けてください。答えは製品固有のものです。 – jarlh

+0

'Date'と' SUM'を 'Date'でグループ化する必要があります。' Date'によってグループ化されていなければなりません。 – Tom

+1

SQLクエリで記述できますか? – Ert

答えて

0

はこれを試してみてください。この

SELECT 
ID, 
[Date], 
Value, 
Total = Value + COALESCE(
(
    SELECT SUM(Value) 
     FROM TableName AS s 
     WHERE s.[Date] < o.[Date] AND s.Id=o.Id), 0 
) 
FROM TableName AS o 
ORDER BY [Date]; 
0

を試してみてください。

SELECT ID, Date, Value, SUM(Value) OVER(PARTITION BY ID ORDER BY ID, Date) AS 'Total' 
     FROM [TableName]