मुझे पता है कि आप MSSQL का उपयोग नहीं कर रहे हैं, हालाँकि यह अवधारणा आपकी मदद कर सकती है।
मुझे यकीन नहीं है लेकिन STRING_AGG
. के स्थान पर आपको LISTAGG
. की आवश्यकता हो सकती है . मैं यहाँ केवल अवधारणा को बताने की कोशिश कर रहा हूँ।
CREATE PROCEDURE PivotMyTable
AS
BEGIN
DECLARE @cols NVARCHAR(MAX) = '';
DECLARE @sql NVARCHAR(MAX) = 'select * from (select competency_id from competency_tab t) pivot (count(competency_id) for competency_id in (##COLUMS##))'
WITH T
AS
(SELECT DISTINCT
competency_id
FROM competency_tab)
SELECT
@cols = STRING_AGG(QUOTENAME(T.competency_id, ''''), ',')
FROM T
SET @sql = REPLACE(@sql, '##COLUMNS##', @cols);
EXEC @sql;
END