私は C# を使用しており、SQLite はまったく新しいものです。
特定のユーザーと日付範囲の特定の分母で割って、レコードフィールド「Value1」を更新する必要があります(最初の記録日から特定の日付、たとえば2012-03-01)。
したがって、データセットをループする必要があり、User=John および Date <= than 2012-03-01 の場合、Value1 を 10 で割ります。
Value1 を分割できるように、Value1 が何であるかを知る必要があるため、これは明らかに SQL だけでは実行できません。どうすればこれを行うことができますか?
以下は、変更する必要があるデータの例です
User | Date | Value1 | Value2 | Value3
----------------------------------------------
John | 2012-01-01 | *50 | 5 | 80
John | 2012-02-01 | *100 | 78 | 60
John | 2012-03-01 | *10 | 100 | 5
John | 2012-04-01 | 5 | 89 | 55
John | 2012-05-01 | 15 | 50 | 44
Max | 2012-01-01 | 40 | 25 | 90
Max | 2012-02-01 | 99 | 79 | 30
Max | 2012-03-01 | 100 | 110 | 59
Max | 2012-04-01 | 25 | 29 | 85
Max | 2012-05-01 | 15 | 30 | 88
変更されたデータを 10 で割った値
User | Date | Value1 | Value2 | Value3
----------------------------------------------
John | 2012-01-01 | *5 | 5 | 80
John | 2012-02-01 | *10 | 78 | 60
John | 2012-03-01 | *1 | 100 | 5
John | 2012-04-01 | 5 | 89 | 55
John | 2012-05-01 | 15 | 50 | 44
Max | 2012-01-01 | 40 | 25 | 90
Max | 2012-02-01 | 99 | 79 | 30
Max | 2012-03-01 | 100 | 110 | 59
Max | 2012-04-01 | 25 | 29 | 85
Max | 2012-05-01 | 15 | 30 | 88
Value1 が定数の場合、以下のコードを使用できます。しかし、そうではなく、2012-01-01 を 2012-03-01 に更新します。Value1 はすべて 5 になります。
Value1 = 50
Val = Value1 / 10
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = "UPDATE Tablename SET Value1= '"+Val+"' WHERE User = 'John' and Date <= '2012-03-01'";
sql_cmd.ExecuteNonQuery();