Mysql 行转列 + json


SET @EE = '';
SET @str_tmp = '';

SET @Revenue_JSON = '';
SET @Revenue_JSON_tmp = '';

SELECT @EE := CONCAT(
@EE,
'SUM(IF(fsRevenueTypeName=\'',
fsRevenueTypeName,
'\'',
',fdSubTotal,0)) AS ''revenue_',
fsRevenueTypeName,
''','
) AS aa ,
@Revenue_JSON := CONCAT (
@Revenue_JSON,','',"'
,fsRevenueTypeName,'":'','
,'revenue_',fsRevenueTypeName
)
AS bb
INTO @str_tmp,@Revenue_JSON_tmp
FROM
(
SELECT DISTINCT
fsRevenueTypeName
FROM
TempRevenueType
WHERE fsRevenueTypeName IS NOT NULL
) A
ORDER BY
LENGTH(aa) DESC
LIMIT 1;

-- 拼接 json
SELECT CONCAT('''{',SUBSTRING(@Revenue_JSON_tmp,4),','',"汇总":'',','revenue_汇总',',''}''') INTO @Revenue_JSON_tmp;

SET @QQ = CONCAT(
' CREATE TEMPORARY TABLE TempRevenueType1 ( SELECT fsSellNo3,CONCAT(',@Revenue_JSON_tmp,') as revenue_info',
' FROM ( SELECT fsSellNo as fsSellNo3,',@str_tmp,
' SUM(fdSubTotal) AS revenue_汇总 FROM TempRevenueType Group By fsSellNo) a );'
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值