我有这样的数据。
按日期和人排序。现在我的目标是添加一列并使它看起来像这样。
如您所见,基于排序,起始行必须为红色。如何在SQLLite中实现它? 到目前为止,这是我的代码,不要将其与我想要的代码结合起来
SELECT date,person FROM table_name
ORDER BY date,person
答案 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;