数据小白学习中 2024-07-10 10:57 采纳率: 78.3%
浏览 4
已结题

关于sql中case使用的提问

现在有这样的sql查询,但星期一的7点和星期日的7点重复了,导致后续产生的星期日19点到星期一7点的数据属于周一,而不是规定的周日,有没有方法,在不影响周一本身数据的情况下,将星期日19点到星期一7点的数据定为周日(也就是周一只有一段数据,周日有两段数据)

SELECT *,
           CASE 
         WHEN (week_day ='星期一'  and( hour_of_day = 19 or hour_of_day = 7)) THEN '周一'
               WHEN (week_day = '星期二' and (hour_of_day = 19 or hour_of_day = 7)) THEN '周二'
               WHEN (week_day ='星期三' and (hour_of_day = 19 or hour_of_day = 7)) THEN '周三'
               WHEN (week_day = '星期四'  and( hour_of_day = 19 or hour_of_day  =7)) THEN '周四'
               WHEN (week_day = '星期五' and (hour_of_day = 19 or hour_of_day = 7)) THEN '周五'
         WHEN (week_day ='星期六'  and (hour_of_day = 19 or hour_of_day = 7)) THEN '周六'
 WHEN (week_day = '星期日'  and (hour_of_day = 7 or hour_of_day = 13)) or( week_day ='星期日' and (hour_of_day = 19) OR (week_day ='星期一'AND hour_of_day = 7) )    THEN '周日'
              
           END AS period

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-10 10:57
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您好!关于您的问题,我们可以调整 SQL 的 CASE 语句来确保星期日的 19 点到星期一的 7 点的数据被标记为“周日”,同时保证星期一的数据不受影响。这里是一个调整后的 SQL 语句示例:

    SELECT *,
           CASE 
               WHEN (week_day = '星期一' AND hour_of_day = 7) THEN '周一'
               WHEN (week_day = '星期日' AND hour_of_day = 19) THEN '周日'
               WHEN (week_day = '星期一' AND hour_of_day = 19) THEN '周一'
               WHEN (week_day = '星期日' AND hour_of_day = 7) THEN '周日'
               WHEN (week_day IN ('星期一', '星期二', '星期三', '星期四', '星期五', '星期六') AND (hour_of_day = 19 OR hour_of_day = 7)) THEN CONCAT(week_day, '晚')
               ELSE week_day
           END AS period
    FROM your_table;
    

    这里的逻辑是:

    1. 首先检查是否是星期一的 7 点,如果是,则标记为“周一”。
    2. 然后检查是否是星期日的 19 点,如果是,则标记为“周日”。
    3. 接着检查是否是星期一的 19 点,如果是,则也标记为“周一”。
    4. 检查是否是星期日的 7 点,如果是,则标记为“周日”。
    5. 对于其他工作日的 7 点和 19 点,使用 CONCAT 函数将星期几和“晚”字连接起来,形成“周一晚”、“周二晚”等。
    6. 如果以上条件都不满足,则默认使用原始的 week_day

    请注意,这个 SQL 语句是基于您提供的示例进行修改的,可能需要根据您实际的表结构和字段名称进行调整。如果您需要进一步的帮助或者有其他问题,请随时告诉我。

    关于参考链接,这里没有特定的链接提供,因为这个问题主要是通过逻辑调整来解决的,而不是依赖外部资源。如果您需要 SQL 相关的学习资源或文档,我可以推荐一些通用的 SQL 学习网站或文档。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 7月10日

悬赏问题

  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现