在选择的SQL Lite中添加交替计数

时间:2018-08-06 02:59:35

标签: android sqlite android-sqlite

我有这样的数据。

enter image description here

按日期和人排序。现在我的目标是添加一列并使它看起来像这样。

enter image description here

如您所见,

基于排序,起始行必须为红色。如何在SQLLite中实现它? 到目前为止,这是我的代码,不要将其与我想要的代码结合起来

SELECT date,person FROM table_name ORDER BY date,person

2 个答案:

答案 0 :(得分:1)

SQLite并不是最好的工具,但是您可以使用相关的子查询来枚举行:

select t.*,
       (select count(*)
        from t t2
        where t2.date = t.date and t2.person <= t.person
       ) as seqnum
from t;

然后您可以使用模运算:

select t.*,
       (case when seqnum % 2 = 1 then 'Red' else 'Blue' end) as color
from (select t.*,
             (select count(*)
              from t t2
              where t2.date = t.date and t2.person <= t.person
             ) as seqnum
      from t
     ) 
order by date, seqnum;

答案 1 :(得分:0)

在SQLite 3.25.0或更高版本(不久后将在Android中不再提供)中,窗口函数是对组中的行进行计数的最简单方法。然后使用modulo-2检查数字是奇数还是偶数:

SELECT Date,
       Person,
       CASE row_number() OVER (PARTITION BY Date ORDER BY Person) % 2
         WHEN 1 THEN 'Red'
         ELSE        'Blue'
       END AS Color
FROM table_name
ORDER BY Date, Person;