[英]how to sum values in sql using case based on color value?
正如我們在顏色列中的圖像中看到的,有紅色和黑色兩個值
我想計算紅色和黑色值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';
我想要的 output 像下面這樣在單行中給出
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
任何幫助將不勝感激並提前感謝
您需要 2 個級別的聚合。
這適用於 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
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;
只要您只查看這 2 個 colors,這將起作用,否則您必須做其他事情。
這實質上是使用SUM() function 來對抗IIF() function 的結果。
我剛剛重新閱讀了您的問題,我不確定您是否真的想對顏色值求和。 如果是這樣,您可以刪除 SUM() function:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.