我现在有一张看起来像这样的表:
Day Limit Price
1 52 0.3
1 4 70
1 44 200
1 9 0.01
1 0 0.03
1 0 0.03
2 52 0.4
2 10 70
2 44 200
2 5 0.01
2 0 0.55
2 2 50
有没有办法可以使用SQL将结果操作到具有不同价格类别的表中,并选择与其价格相关的限制的最大值?
Day 0-10 10-100 100+
1 52 4 44
2 52 10 44
答案 0 :(得分:2)
您可以使用CASE
和MAX
:
SELECT Day,
MAX(CASE WHEN Price BETWEEN 0 AND 10 THEN Limit ELSE 0 END) as ZeroToTen,
MAX(CASE WHEN Price BETWEEN 10 AND 100 THEN Limit ELSE 0 END) as TenToHundred,
MAX(CASE WHEN Price > 100 THEN Limit ELSE 0 END) as HundredPlus
FROM YourTable
GROUP BY Day
这是Fiddle。
BTW - 如果您使用的是MySQL,请在LIMIT周围添加刻度,因为它是关键字。
祝你好运。答案 1 :(得分:0)
我不确定你是否限制0-10 10-100和100+但是我试图建立一个SQL语句但是如果没有限制,看起来如果没有存储过程将会非常困难4列,否则你的SQL语句需要循环或while。
如果您只想坚持4列,那么我同意以下使用CASE和MAX的答案