mysql - 在MYSQL的case语句中使用多个条件
问题描述
我的目标是加入 Product_ID 上的用户和产品表。我在下面附上了用户表和产品表供您参考。
用户表: 用户表
产品表:产品表
当product_ID 为 7时,我需要查看users表中的申请日期,并比较它是否在products表中的first_day_active和last_day_active范围内以获得佣金率。我使用了以下查询,但它似乎不起作用。有人可以帮忙吗?谢谢!
CASE
WHEN (users.product_ID = 7 AND users.application_date BETWEEN ('2017-04-01','2017-06-01')) THEN products.commission
WHEN (users.product_ID = 7 AND users.application_date BETWEEN ('2017-06-02','2017-09-01')) THEN products.commission
WHEN users.product_ID = 7 AND users.application_date > '2017-09-02' THEN products.commission
ELSE "Something Fishy" END AS TESTING
解决方案
示意图:
SELECT Users.Name,
Products.Product_name,
Products.Comission
FROM Users
JOIN Products ON Users.Application_id = Products.Application_id
AND Users.Application_Date BETWEEN Products.First_day
AND COALESCE(Products.Last_day, Users.Application_Date)
WHERE products.Active = 0
推荐阅读
- java - Lucene 如何获取找到的查询的位置?
- excel - 如果某些单元格包含任何数据,则更改 VBA 编码以允许发生命令
- python - PySpark:如何为数组列中的每个元素添加值?
- django - 在模板中包含 javascript 代码时出现 TemplateSyntaxError
- asp.net - 处理您的请求时发生错误。尝试登录我的应用程序时出现此错误
- audio - 使用带有独立视频和音频轨道的 Wowza Stream Engine 的 SMIL 仅播放音频
- node.js - 将我现有的 Node Js 代码转换为 Async Await
- julia - 如何在 Flux.jl 中定义自定义训练循环
- node.js - Sequelize init 含义
- c++ - 如何在C/C++中使用windows.h来控制其他程序的音量控制