SQL LITE添加具有occurencese计数的列

时间:2017-11-24 07:45:25

标签: sqlite

我使用sqllite,我有一个表格,如下例所示:

ID state 
1   init
2   run
3   stop
4   run
5   init
6   stop
7   run

我想添加一个列来计算" run"的出现次数。仅在" init"遇到状态,例如:

ID state session
1   init   0
2   run    1   <---first occurence
3   stop   1
4   run    1
5   init   1 
6   stop   1
7   run    2   <---second occurrence

有办法吗? 谢谢

1 个答案:

答案 0 :(得分:0)

由于我使用QT管理SQL数据库,我以这种方式解决了

QSqlQuery query;
bool initFlag = false;
int countSession = 0;

if (query.exex("SELECT id, state FROM table"))
 { 
 while (query.next())
 {
   if (query.value(1).toString() == "init")
    initFlag = true;
   if (initFlag && query.value(1).toString() == "run")
   {
      countSession++;
      initFlag = false;
   }

   QSqlQuery update;
   update.exec("UPDATE table SET session = "+QString::number(countSession)+" WHERE id = "+query.value(0).toInt());
 } 
}