【问题标题】:Change the Value of Column When Condition is met满足条件时更改列的值
【发布时间】:2019-01-23 11:21:34
【问题描述】:

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

// 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

【问题讨论】:

    标签: android sql database sqlite


    【解决方案1】:

    我愿意这样做:

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

    编辑: 记得加 DISTINCT 否则同一颜色的一天会被计算多次

    【讨论】:

    • 我想这正是我想要的,我什至不知道这是可能的,非常感谢你,你刚刚救了我的命!
    【解决方案2】:

    你可以使用聚合和case:

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

    【讨论】:

      【解决方案3】:

      我不能 100% 确定这就是你想知道的全部:

      但不知道有多少不同

      你可以用“distinct”参数解决这个问题,像这样>:

      SELECT DATE, count(DISTINCT COLOR) CountColors FROM list1 按日期分组

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

      【讨论】:

        猜你喜欢
        • 2021-06-26
        • 2021-05-19
        • 1970-01-01
        • 2013-05-28
        • 2017-10-14
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多