如何使用基于颜色值的case对sql中的值求和?

nvbavucw  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(244)

正如我们在“颜色”列的图像中看到的,有两个值红色和黑色
我要计算红色和黑色的值 Black=3 & Red=7
我的sql查询

select SPDNO,Cost,Company_Name,Product,Color,
case when Color='Black' then 'sum Black Color' when Color='Red' then 'sum Red Color'
else '' End as ColorResult  
from bike_details where (Color='Red' or Color='Black') and  SPDNO='5000';

我的期望输出如下单行给出

SPDNO   Cost     Company_Name  ColorSum    Product                                                                                                                       
5000    470000   Memon Motors  3,7         SUPER STAR (SS-70cc)M.C Red,SUPER STAR (SS-70cc)M.C BLack

如有任何帮助,我们将不胜感激

zyfwsgd6

zyfwsgd61#

您需要两个聚合级别。
这将适用于mysql:

select t.SPDNO, t.Cost, t.Company_Name, 
       group_concat(t.Product order by t.ColorSum desc), 
       group_concat(t.ColorSum order by t.ColorSum desc)
from (
  select SPDNO, Cost, Company_Name, Product, Color, count(*) ColorSum
  from bike_details 
  where (Color='Red' or Color='Black') and  SPDNO='5000'
  group by SPDNO, Cost, Company_Name, Product, Color
) t
group by t.SPDNO, t.Cost, t.Company_Name
ha5z0ras

ha5z0ras2#

select SPDNO,Cost,Company_Name,Product,Color, SUM(IIF(Color = 'Black', 3, 7)) as ColorResult from bike_details where (Color='Red' or Color='Black') and SPDNO='5000' GROUP BY SPDNO,Cost,Company_Name,Product; 只要你只看这两种颜色,这将工作,否则你必须做其他事情。
这实际上是对iif()函数的结果使用sum()函数。
我只是重读了你的问题,我不确定你是否真的想把颜色加起来。如果是这样,可以删除sum()函数: select SPDNO,Cost,Company_Name,Product,Color, IIF(Color = 'Black', 3, 7) as ColorResult from bike_details where (Color='Red' or Color='Black') and SPDNO='5000' GROUP BY SPDNO,Cost,Company_Name,Product;

相关问题