作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表,一个是任务列表。每个任务(行)由一对唯一的 story_id
和 pos_id
(销售点 ID)指定,并包括日期 last_completed
。另一个表是具有 priority
编号的 POSes 列表。
这就是我需要的:我将为每个任务调用 x
数量,即自上次完成后的时间除以其 POS 的优先级数。我需要每个故事所有 x
的所有 POS 的总和。
除此之外,有些任务从未完成,所以 last_completed
为 NULL
;对于这些任务,我想将 x
设置为 10。
这是我尝试过的方法,但是我在 WHERE
上遇到错误:
SELECT t.story_id, SUM(
CASE
WHEN t.last_completed IS NULL THEN 10
ELSE DATEDIFF(NOW(), t.last_completed)/p.priority
END
WHERE t.pos_id = p.id) AS weeks
FROM test_task t, test_pos p
GROUP BY story_id;
我还在 ELSE
的同一行尝试了 WHERE
子句,但这也没有用。
谁能告诉我如何将 priority
与 CASE
内的 last_completed
日期相关联 SUM
?
最佳答案
据推测,这是您想要的查询:
SELECT t.story_id,
SUM(CASE WHEN t.last_completed IS NULL THEN 10
ELSE DATEDIFF(NOW(), t.last_completed)/p.priority
END) as weeks
FROM test_task t JOIN
test_pos p
ON t.pos_id = p.id
GROUP BY story_id;
您的条件应该在 on
子句中用于显式 join
。这与 select
子句中的 case
表达式无关。
关于mysql - 如何在 SUM 中使用带有 CASE 的 WHERE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936917/
我是一名优秀的程序员,十分优秀!