Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मूल्य की गणना करने के लिए सूत्र के रूप में कॉलम का उपयोग करने के लिए SQL क्वेरी

डायनामिक क्वेरी जाने का (केवल) तरीका है और यह उतना जटिल नहीं है:

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);

SQLFiddle DEMO

लेकिन आपको इस बात से अवगत होना चाहिए कि यह त्रुटियों का कितना खतरा है। यदि फॉर्मूला कॉलम का मान मान्य फॉर्मूला क्वेरी ब्रेक नहीं है।

संपादित करें :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 - कुछ और पंक्तियां जोड़ी गईं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिनांक-आदेशित सूची से पिछले गैर-शून्य मान ढूँढना

  2. मैक्स बनाम टॉप 1 - कौन सा बेहतर है?

  3. रोलबैक ट्रांज़ेक्शन अनुरोध का कोई संगत BEGIN ट्रांज़ेक्शन नहीं है

  4. संग्रहित प्रक्रिया से सी # एएसपीनेट में रिटर्न वैल्यू प्राप्त करना (वाक्यविन्यास समस्या)

  5. एकल कॉलम में कई पंक्तियाँ सम्मिलित करें