gpt4 book ai didi

Mysql if 子句序列

转载 作者:行者123 更新时间:2023-11-29 02:23:42 26 4
gpt4 key购买 nike

我有一个这样的交易表。 4个领域:时间id类型金钱

其中一种类型有 3 种不同的子类型 (21,22,23),我想根据 ID 从中创建其他类型,然后计算每个日期和类型的金额。我是这样做的。

select date(time), sum(money),
case
when type=2 and id<100 then type=21
when type=2 and id between 100 and 499 then type=22
when type=2 and id>=500 then type=23
when type<>2 then type
end as type
from transactionsTable
where type in (1,2,3,4,21,22,23) and date(time)>='2014-11-01' group by 1,3

其中一个奇怪的结果是我得到了一个 type=0,我在 where 子句中过滤掉了它。第二个奇怪的事情是我没有得到任何新创建的类型 21、22、23!

谁能指出我正确的方向?

最佳答案

如果没有某种插入,您不能在 where 中引用类型或设置类型。不过,您可以做的是使用此查询的结果编写查询以返回您想要的内容。

SELECT  DATE(time), SUM(money),
CASE
WHEN type=2 AND id<100
THEN 21
WHEN type=2 AND id BETWEEN 100 AND 499
THEN 22
WHEN type=2 AND id>=500
THEN 23
WHEN type<>2
THEN type
END AS type
FROM transactionsTable
GROUP BY 1,3
HAVING type IN (1,2,3,4,21,22,23) AND DATE(time)>='2014-11-01'

SIMPLIFIED FIDDLE DEMO

注意:having 子句重新评估结果集,因此您可以在必须包含查询结果时引用类型

关于Mysql if 子句序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com