满足条件时更改列的值

时间:2019-01-23 11:21:34

标签: android sql database sqlite

我需要帮助进行将日期分组的查询,然后告诉我在那些日期中是否存在具有一种或多种不同颜色的日期,并更改这些日期的列颜色值:

// What I have
    DATE    |  Color  
 23/01/2019 |  BLUE      
 24/01/2019 |  RED       
 24/01/2019 |  RED
 24/01/2019 |  RED
 27/01/2019 |  RED
 27/01/2019 |  GREEN
 28/01/2019 |  PURPLE
 29/01/2019 |  YELLOW
 02/02/2019 |  BROWN
 02/02/2019 |  BLUE
 15/02/2019 |  RED
 17/02/2019 |  RED
 17/02/2019 |  PURPLE
 20/02/2019 |  WHITE
 23/02/2019 |  BLACK
 27/02/2019 |  CYAN


// Output I need
    DATE    |  Color  
 23/01/2019 |  BLUE      
 24/01/2019 |  RED
 27/01/2019 |  MULTIPLE
 28/01/2019 |  PURPLE
 29/01/2019 |  YELLOW
 02/02/2019 |  MULTIPLE
 15/02/2019 |  RED
 17/02/2019 |  MULTIPLE
 20/02/2019 |  WHITE
 23/02/2019 |  BLACK
 27/02/2019 |  CYAN 

我进行了查询,将日期分组,并告诉我每个事件中有多少种颜色,但没有告诉我有多少种

我进行的查询是:

SELECT Date, color, COUNT(*) AS ColorCount 
FROM Events 
GROUP BY DataDoc 
HAVING ColorCount > 0

我正在制作的日历应用需要这个,而我正在使用SQLite

3 个答案:

答案 0 :(得分:2)

我会去的:

select date, case when count(distinct color) >1 then 'MULTIPLE' else color end as color
from events
group by date

编辑: 请记住添加DISTINCT,否则一天多次使用相同颜色的颜色将被多次计算

答案 1 :(得分:1)

您可以使用聚合和case

SELECT Date,
       (CASE WHEN MIN(color) = MAX(color) THEN MIN(color)
             ELSE 'MULTIPLE'
         END)
FROM Events
GROUP BY Date;

答案 2 :(得分:0)

我不是100%确定这就是您想知道的一切

  

但没有多少不同

您可以使用“ distinct”参数来解决此问题,如下所示:

选择日期,按日期划分list1组中的CountColors种颜色

根据手册,这应该适用于SQLite。