使用sql case时出现的问题


Problems when using sql case

数据示例我目前正在尝试解决一个问题。我有一个数据库,里面有一个表,id co2_band,纳税年度,在.中的纳税百分比

我现在有这个代码

    SELECT tax_year, CO2_BAND AS band,
    CASE CO2_BAND = 116
    WHEN CO2_band BETWEEN 1 AND 116 THEN'116'
        WHEN CO2_band BETWEEN 95 AND 10 THEN 'fdjhgkjds'
    ELSE 'here'
    END AS b
    FROM company_car_tax
    WHERE tax_year LIKE '2015-16%'
    LIMIT 1

我的问题是二氧化碳值在50-75之间,我必须四舍五入到最接近的记录,怎么能做到呢?

示例数据所以我有一个装满汽车的数据库,里面有二氧化碳的数值。如果我有一辆车,它的二氧化碳值在50-75之间则需要选择75括号

我建议您尝试下面显示的代码。请注意,CASE条件的顺序很重要,所以我重新排列了顺序,以确保所有条件都可以满足。我通过列出从最严格到最不严格的条件来做到这一点。然而,如果我为自己做这件事,我会指定条件,这样值就不会重叠。这将消除任何混乱。

SELECT tax_year, CO2_BAND as band,
       CASE WHEN CO2_band BETWEEN 50 AND 75 THEN '75'
            WHEN CO2_band BETWEEN 10 AND 95 THEN 'fdjhgkjds'
            WHEN CO2_band BETWEEN 1 AND 116 THEN '116'
            ELSE 'here' END AS b
FROM company_car_tax
WHERE tax_year LIKE '2015-16%'
LIMIT 1 
SELECT tax_year, CO2_BAND AS band,
CASE  
WHEN CO2_band BETWEEN 1 AND 116 
  THEN'116'
WHEN CO2_band BETWEEN 95 AND 10 
  THEN 'fdjhgkjds'
WHEN CO2_band BETWEEN 50 AND 75
  THEN select max(CO2_band)  FROM company_car_tax where CO2_band BETWEEN 50 AND 75 group by tax_year
ELSE 'here'
END AS b
FROM company_car_tax
WHERE tax_year LIKE '2015-16%'
LIMIT 1