操作SQL查询以创建返回最大值的数据类别

时间:2013-02-08 02:06:47

标签: sql

我现在有一张看起来像这样的表:

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

2 个答案:

答案 0 :(得分:2)

您可以使用CASEMAX

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的答案