按foreach行分组时的Mysql案例
数据库产品\u api:按foreach行分组时的Mysql案例,mysql,group-by,case,Mysql,Group By,Case,数据库产品\u api: SHOPID PRODUCT_NAME PRODUCT_CODE 1 prod_name1 SKU1 2 prod_name2 SKU1 3 prod_name3 SKU1 我想按产品代码分组,并获得每个SHOPID的产品名称 我的代码: SELECT case when SHOPID = 1 then PRODUCT_NAME end as shopid1, case when SHOPID
SHOPID PRODUCT_NAME PRODUCT_CODE
1 prod_name1 SKU1
2 prod_name2 SKU1
3 prod_name3 SKU1
我想按产品代码分组,并获得每个SHOPID的产品名称我的代码:
SELECT case when SHOPID = 1 then PRODUCT_NAME end as shopid1,
case when SHOPID = 2 then PRODUCT_NAME end as shopid2,
case when SHOPID = 3 then PRODUCT_NAME end as shopid3,PRODUCT_CODE
FROM products_api
GROUP BY PRODUCT_CODE
结果应为一行,带有:
shopid1 shopid2 shopid3 PRODUCT_CODE
prod_name1 prod_name2 prod_name3 SKU1
但结果是一行中有:
shopid1 shopid2 shopid3 PRODUCT_CODE
prod_name1 SKU1
谢谢。你几乎让它工作了。只需在
CASE
表达式周围添加MAX
聚合函数:
SELECT MAX(case when SHOPID = 1 then PRODUCT_NAME end) as shopid1,
MAX(case when SHOPID = 2 then PRODUCT_NAME end) as shopid2,
MAX(case when SHOPID = 3 then PRODUCT_NAME end) as shopid3,
PRODUCT_CODE
FROM products_api
GROUP BY PRODUCT_CODE
我认为
组\u CONCAT
更好,因为名称是字符串。@AlinPurcaru这取决于要求。OP明确表示他/她希望每个SHOPID
值都有一个单独的列。@GrempelsGabriel也可以使用MIN
。我们只需要一个聚合函数,它将对VARCHAR
进行操作,并返回字段值。