mysql行转列

125 阅读1分钟

mysql行转列

SELECT
	jt.* 
FROM
	(
	SELECT
		JSON_ARRAY(
			JSON_OBJECT( 'key', '500万以下', 'value', a.a ),
			JSON_OBJECT( 'key', '500-1000万', 'value', a.b ),
			JSON_OBJECT( 'key', '1000-5000万', 'value', a.c ),
			JSON_OBJECT( 'key', '5000-1亿', 'value', a.d ),
			JSON_OBJECT( 'key', '1亿以上', 'value', a.f ) 
		) AS objct_array ## json_object('500万以下', a.a, '500-1000万', a.b, '1000-5000万', a.c,'5000-1亿', a.d,'1亿以上',a.f) as josn_obj
		
	FROM
		(
		SELECT
			count(( lci.CONTRACT_AMOUNT BETWEEN 0 AND 5000000 ) OR NULL ) AS a,
			count(( lci.CONTRACT_AMOUNT > 5000000 AND lci.CONTRACT_AMOUNT <= 10000000 ) OR NULL ) AS b,
			count(( lci.CONTRACT_AMOUNT > 10000000 AND lci.CONTRACT_AMOUNT <= 50000000 ) OR NULL ) AS c,
			count(( lci.CONTRACT_AMOUNT > 50000000 AND lci.CONTRACT_AMOUNT <= 100000000 ) OR NULL ) AS d,
			count(( lci.CONTRACT_AMOUNT > 100000000 ) OR NULL ) AS f 
		FROM
			LAS_CONTRACT_INFO lci 
		WHERE
			DELETED = 0 
			AND YEAR ( FROM_UNIXTIME( round( CREATION_TIME / 1000, 0 )) )= YEAR (
			now())) AS a 
	) AS b
	CROSS JOIN JSON_TABLE (
		concat( b.objct_array, '' ),
	'$[*]' COLUMNS ( key_name VARCHAR ( 50 ) PATH '$.key', key_value VARCHAR ( 50 ) PATH '$.value' )) AS jt;

SELECT * 
FROM JSON_TABLE(
    '[1, 2, 3]', 
    '$[*]' COLUMNS(
        col1 int PATH '$'
    )