我有一個數據庫的列:id,pdate,pvalue1,pvalue2。首先我做一個查詢與光標:我應該如何在Sqlite中執行此查詢?
Cursor c = ourDatabase.query(DATABASE_TABLE, new String[] { "_id","pdate","pvalue1","pvalue2"},
"pdate >= ? AND pdate <= ?", new String[] { datefrom, dateto }, null, null, null);
這給了我一些行,例如,如果PDATE = 20120318,然後pvalue1 = 58,pvalue2 = 29。這些是字符串,所以我可以給pvalue2賦值「XX」。我想總結給定datefrom和dateto之間的pvalue1,並按pdate將它們分組,其中pvalue2 = XX。我的問題是,我不能把這個條件放入查詢中(因爲它的工作,像「pvalue2 = XX」..),因爲我也需要其他數據。
if (c.moveToFirst())
{
do{
if (c.getString(3).equals("XX")){
Log.i("XX", c.getString(1) + " " + c.getString(2)) + " " + c.getString(3));
}
else {
Log.i("NotXX", c.getString(1) + " " + c.getString(2)) + " " + c.getString(3));
}
while (c.moveToNext());
}
}
這是好到目前爲止,這樣我就可以用這個日誌DATAS其中pvalue2 = XX和NotXX和得到的東西是這樣的: (PDATE,pvalue1,pvalue2)20120317,48,29; --- ---; 20120317,21,54; ------- 20120317,11,XX; ----- 20120318,79,71; ------- 20120318,21,XX;
我想做什麼?
第一:按pdate對總和(pvalue1)進行分組,並指出它是否爲pvalue2爲XX或不是XX,所以這樣的事情: 20120317,NotXX,69(自48 + 21 = 69)------- - 20120317,XX,11 -------- 20120318,NotXX,79 -------- 20120318,XX,21
在此之後,我想減去NOTXX總和中的XX總和每天。我想得到: 20120317,58(自69-11)------- 20120318,58(自79-21)
我該怎麼做? 非常感謝您提前!
許多其他查詢包含?在我的項目中,所以它不是問題。例如我可以使用:new String [] {「_id」,「pdate」,「sum(pvalue1)」,}, \t \t \t \t \t「pdate> =?AND pdate <=?」,new String [] {datefrom,dateto},「pdate」,null,null);這給了我每天pvalue1的總和。但我不能使用這個,因爲我必須分開XX和Notxx值。 – 2012-03-17 17:39:27
是的,如果您在'selectionArgs'中指定'selection'參數中的'?',但我的意思是將'?'放入'projection'中。它可能工作,但我相信它沒有。將需要[準備語句](http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#compileStatement%28java.lang.String%29)probaly – zapl 2012-03-17 18:10:01
'db.query(「table」,新的String [] {「_id」,「sum(從表where pdate>?選擇pdate作爲總和)」},「pdate> =?AND pdate <=?」,new String [] {/ * projection? */datefrom,dateto},null,null,null);'這就是我的意思 – zapl 2012-03-17 18:15:45