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

गतिशील तालिका के स्थानांतरण के लिए एसक्यूएल क्वेरी

आपके मामले में, आपको Salary, NoticePeriod, CTC कॉलम को अनपिवट करना चाहिए पंक्तियों में, फिर PIVOT :

WITH Unpivoted
AS
(
    SELECT Name, Fields, SalaryValue
    FROM salaries AS s
    UNPIVOT
    (
      SalaryValue
      FOR  Fields IN(Salary, NoticePeriod, CTC)
    ) AS u
)
SELECT Fields, jack,bruce
FROM Unpivoted AS u
PIVOT
(
  MAX(SalaryValue)
  FOR Name IN(Jack, Bruce)
) AS p;

UNPIVOT कॉलम को बदल देगा Salary, NoticePeriod, CTC मूल्यों में:

फिर पिवट प्रत्येक फ़ील्ड मान के लिए वेतन मानों को पिवट करेगा और नामों को कॉलम में बदल देगा।

और निश्चित रूप से आपको नामों की सूची लिखने के बजाय इसे गतिशील रूप से करना होगा:

DECLARE @cols AS NVARCHAR(MAX);
DECLARE @colnames AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);

SELECT @cols = STUFF((SELECT distinct ',' +
                        QUOTENAME(name)
                       FROM salaries
                      FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)') 
                        , 1, 1, '');


SELECT @query = 'WITH Unpivoted
                AS
                (
                    SELECT Name, Fields, SalaryValue
                    FROM salaries AS s
                    UNPIVOT
                    (
                        SalaryValue
                        FOR  Fields IN(Salary, NoticePeriod, CTC)
                    ) AS u
                )
                SELECT Fields, ' + @cols + '
                FROM Unpivoted AS u
                PIVOT
                (
                    MAX(SalaryValue)
                    FOR Name IN(' + @cols + ')' +
                ') p';

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. SQL सर्वर में सांख्यिकी IO क्या है?

  2. जेपीए समग्र प्राथमिक कुंजी

  3. pyodbc डेटाबेस से कनेक्ट नहीं हो सकता

  4. SQL सर्वर केस-संवेदनशीलता की जाँच करता है?

  5. SQL सर्वर 2008 - .csv में हेडर के साथ आउटपुट के लिए cmd का उपयोग करें