0

私は 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();
4

1 に答える 1

0

実際には SQL 構文をブラッシュアップする必要がありますが、通常、ステートメントの現在の行でフィールドを使用する場合は、ステートメント自体UPDATEに方程式 (または文字列関数などの適切なもの) を入れるだけで済みます。UPDATE

したがって、あなたの例でValue1は、特定の行 (または行のセット) を 10 で割るには:

UPDATE Tablename SET Value1 = Value1/10 WHERE User = 'John' and Date <= '2012-03-01'

上記の最新のコメントから、別の行を選択するために追加の条件が必要な場合は、それらをWHERE句に入れます。

UPDATE Tablename SET Value1 = 1 WHERE User = 'John' and Date <= '2012-03-01' and Value1 = 10

したがって、SQL 構文について一般的に読んで (これは大きなテーマです)、構文に関する特定の質問があれば再投稿してください。

于 2013-04-22T12:50:30.407 に答える