आपकी GROUP_CONCAT क्वेरी के लिए; आपके मामले में stmt, आप अपनी उत्पाद तालिका को product
. के रूप में संदर्भित कर रहे हैं अपने आप। लेकिन आपकी शामिल क्वेरी में, आप उत्पाद तालिका को उपनाम p
. के रूप में संदर्भित कर रहे हैं . चूंकि पहली group_concat क्वेरी जॉइन क्वेरी का एक हिस्सा है, इसलिए आपको टेबल एलियासेस को समान रखने की आवश्यकता है। (पंक्ति 5 में बदलाव किए गए)
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'count(case when p.name = ''',
product.name,
''' then 1 end) AS ',
replace(product.name, ' ', '')
)
) INTO @pivotsql
from product;
SET @sql = CONCAT('SELECT omd.order_match_id, ', @pivotsql, ' from order_match_detail omd
left join order_match om
on omd.order_match_id = om.id
left join product p
on omd.product_id = p.id
where om.order_status_id in (4, 5, 6, 8)
group by omd.order_match_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;