我正在使用C#和SQLite相當新。C#Visual Studio 2008 - SQLite更新循環
我需要通過將記錄字段「Value1」除以給定用戶和日期範圍的分母(第一個記錄日期爲spicific Date,例如2012-03-01)來更新記錄字段。
所以我需要遍歷數據集,如果用戶=約翰和日期< =比2012-03-01然後除以值1通過讓說,10
這顯然不能在SQL單獨爲已完成我需要知道Value1是什麼,以便我可以分解它。我會如何去做這件事?
下面是我所需要的數據由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
修改
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
修改後的數據劃分如果值1是恆定的話,我可以使用下面的代碼示例。但它is'nt,它會更新2012-01-01至2012-03-01值1都將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();
'「更新表名SET值1 =值1/10其中用戶='約翰'和日期<='2012-03-01'」;' – 2013-04-22 11:53:59
羅傑你是一個明星....它的工作。我必須得到一本關於SQLite 3的書 – user2306859 2013-04-22 12:19:04
Roger最後一次可以打擾你嗎?有沒有一種方法可以編輯SQL語句,以便它在「如果Value1 = 10」上顯示「on 2012-03-01」,然後「UPDATE Tablename SET Value1 = Value1/10 WHERE User ='John'and Date <='2012-03 -01' 「; – user2306859 2013-04-22 12:37:50