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

डायनेमिक SQL सर्वर 2005 पिवट

मैंने देर से इन गतिशील प्रश्नों में से कुछ को किया है ... (मेरे कॉलम क्लाइंट द्वारा महीने में बदलते हैं)। इसे करने का एक तरीका यहां दिया गया है--कोई परीक्षण नहीं, कोई डिबगिंग नहीं, कुछ बग्स को दूर किया जा सकता है:

DECLARE
  @Command     nvarchar(max)
 ,@ColumnList  nvarchar(max)
 ,@OrderId     int
 ,@Debug       bit


--  Build a comman-delimited list of the columns
SELECT @ColumnList = isnull(@ColumnLIst + ',', , '') + ColName
 from dbo.GetTableColumnNames('OrderCash', 2)


--  Insert the list of columns in two places in your query
SET @Command = replace('
SELECT  OrderID, 
        CurrCode + ‘‘GBP CURNCY’‘ AS Ticker, 
        Cash AS Position 
FROM 
( 
    SELECT OrderID, <@ColumnList>
    FROM OrderCash 
) p 
UNPIVOT 
( 
    Cash FOR CurrCode IN  
    (<@ColumnList>) 
) AS unpvt 
WHERE Cash != 0 
And OrderID = @OrderId
', '<@ColumnList>', @ColumnList)


--  Always include something like this!
IF @Debug = 1
    PRINT @Command

--  Using sp_executeSQL over EXECUTE (@Command) allows you execution
--  plan resuse with parameter passing (this is the part you may need
--  to debug on a bit, but it will work)
EXECUTE sp_executeSQL @Command, N'@OrderId int', @OrderId



  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. परपेचुअल वेटेड एवरेज कॉस्ट कैलकुलेशन SQL Server 2008

  3. एसक्यूएल सर्वर:असेंबली के लिए सभी सीएलआर कार्यों/प्रक्रियाओं/वस्तुओं को कैसे सूचीबद्ध करें

  4. एक ही सर्वर पर एकाधिक डेटाबेस में क्वेरी

  5. बैकप्लेन के रूप में एसक्यूएल सर्वर का उपयोग करके वेबफार्म में सिग्नलआर का उपयोग कैसे करें