डायनामिक क्वेरी जाने का (केवल) तरीका है और यह उतना जटिल नहीं है:
DECLARE @query NVARCHAR(MAX) = '';
SELECT @query = @query + '
UNION
SELECT ItemID, Price, Size, Formula, ' + Formula + ' AS CalcValue FROM YourTable WHERE Formula = ''' + Formula + ''' '
FROM YourTable;
SET @query = STUFF(@query,1,8,'');
PRINT @query;
EXEC (@query);
लेकिन आपको इस बात से अवगत होना चाहिए कि यह त्रुटियों का कितना खतरा है। यदि फॉर्मूला कॉलम का मान मान्य फॉर्मूला क्वेरी ब्रेक नहीं है।
संपादित करें :UNION
. के साथ जा रहा है UNION ALL
. के बजाय एक ही सूत्र के कई पंक्तियों में दिखने के कारण
संपादित करें2 :प्लान बी - एक ही चुनिंदा प्रश्नों के समूह चलाने और अलग-अलग परिणाम देने के बजाय, शुरुआत में अलग-अलग सूत्र बनाना बेहतर है:
DECLARE @query NVARCHAR(MAX) = '';
WITH CTE_DistinctFormulas AS
(
SELECT DISTINCT Formula FROM YourTable
)
SELECT @query = @query + '
UNION ALL
SELECT ItemID, Price, Size, Formula, ' + Formula + ' AS CalcValue FROM YourTable WHERE Formula = ''' + Formula + ''' '
FROM CTE_DistinctFormulas;
SET @query = STUFF(@query,1,12,'');
PRINT @query;
EXEC (@query);
SQLFiddle DEMO 2 - कुछ और पंक्तियां जोड़ी गईं