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

SQL सर्वर के साथ एकल तालिका में शामिल होकर मैं सारांश कैसे बना सकता हूँ?

मान लें कि आप SQL Server 2005 या इसके बाद के संस्करण का उपयोग कर रहे हैं, यहाँ कोड है:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName(cast([status] as varchar))
                        FROM LogTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT UserIndex,  [status]
       FROM LogTable ) base
       PIVOT (Count(status) FOR [status]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

इससे कोई फर्क नहीं पड़ता कि आपके पास कितनी अलग स्थिति है। यह गतिशील रूप से PIVOT . के साथ एक क्वेरी को असेंबल करता है ।

अपडेट करें

जैसा कि @JonH ने बताया, मेरे द्वारा पोस्ट किए गए कोड में एक भेद्यता थी, जिससे इंजेक्शन का हमला संभव हो गया। इसे अब QUOTENAME का उपयोग करके ठीक किया गया है कॉलम नाम बनाते समय।

अन्य उदाहरण:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS OLEDB गंतव्य में अद्यतन पंक्तियाँ

  2. विकास परिवेश के लिए सबसे अच्छा SQL सर्वर सेटअप क्या है?

  3. शुरुआती के लिए SQL सर्वर में डायनामिक डेटा मास्किंग

  4. समस्या SQL सर्वर संस्करण पुनर्स्थापित करें?

  5. Azure पोर्टल में Linux पर SQL Server 2017 के साथ प्रारंभ करना