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

गतिशील सामग्री में SQL कर्सर

मुझे कॉलम नामों के बारे में निश्चित नहीं है। तो इस उदाहरण में मुझे उम्मीद है कि tbl_ProjectTransaction projectName . नामक कॉलम रखने के लिए और tbl_TimeTypeGrouping एक GroupName होने के लिए . जैसे किसी ने प्रश्न में टिप्पणी की है, आपको इस मामले में कर्सर का उपयोग नहीं करना चाहिए। आपको एक गतिशील धुरी का उपयोग करना चाहिए। यहाँ और उदाहरण है:

इस तरह के समूहों के नाम प्राप्त करें:

DECLARE @cols VARCHAR(MAX)
SELECT @cols=STUFF
(
    (
        SELECT 
            ',' +QUOTENAME(tbl_TimeTypeGrouping.sGroupName) -- ????
        FROM
            tbl_TimeTypeGrouping
        FOR XML PATH('')
    )
,1,1,'')

यह आपको देगा:

'[Group A],[Group B],[Group C],[Group N]'

और फिर इस तरह एक गतिशील पिवट करें:

DECLARE @query NVARCHAR(4000)=
N'SELECT
    *
FROM
(
    SELECT
        tbl_ProjectTransaction.sProjectName, -- ????
        tbl_ProjectTransaction.decNumberOfHours,
        tbl_TimeTypeGrouping.sGroupName -- ???
    FROM
        tbl_ProjectTransaction
        JOIN tbl_TimeTypeGrouping
            ON tbl_ProjectTransaction.iRefTimeTypeID=tbl_TimeTypeGrouping.iRefTimeTypeID
) AS SourceTable
PIVOT
(
    SUM(decNumberOfHours)
    FOR GroupName IN ('[email protected]+')
) As Pvt'
EXECUTE(@query)

संदर्भ:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DISTINCT रिकॉर्ड प्राप्त करने के लिए TSQL और फिर पंक्ति संख्या लागू करें

  2. जब कोई प्राथमिक कुंजी न हो तो SqlBulkCopy के साथ डुप्लिकेट रिकॉर्ड डालने से कैसे रोकें?

  3. SQL सर्वर डेटाबेस में अद्वितीय बाधाओं वाले स्तंभों की सूची कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 98

  4. SQL सर्वर - नल कॉलम के प्रदर्शन/आकार की कमियां

  5. उद्धरण चिह्नों के साथ पैरामीटर कैसे पास करें