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

SQL क्वेरी में अतिरिक्त पंक्तियों को गतिशील रूप से प्रक्षेपित करें

पहला कदम एक RowNumber add जोड़ना होगा प्रत्येक PorfoilioGroupID के लिए पहली पंक्ति की पहचान करने के लिए कॉलम:

SELECT  p.PortfolioGroupID, 
        p.PortfolioGroupCode, 
        p.DisplayOrder, 
        p.MemberCode, 
        m.ContactCode, 
        m.Custom01, 
        RowNumber = ROW_NUMBER() OVER(PARTITION BY P.PortfolioGroupID ORDER BY m.ContactCode, p.MemberCode)
FROM    [APXFirm].[AdvApp].[vPortfolioGroupMemberFlattened] p
        LEFT OUTER JOIN [APXFirm].[AdvApp].[vPortfolioInterestedParty] m
            ON p.memberid = m.PortfolioID
WHERE   m.ContactCode is not null
AND     p.PortfolioGroupCode like '%_Package'
ORDER BY m.ContactCode, p.MemberCode;

फिर आप अपने 3 मानों (कवर, स्परेटर, रिपोर्ट) के साथ एक टेबल वैल्यूड कंस्ट्रक्टर के साथ अपने परिणाम सेट में शामिल हो सकते हैं, और यह सुनिश्चित करने के लिए कि 'कवर' केवल पहली पंक्ति के लिए दिखाई देता है, बस एक क्लॉज जोड़ें:

WITH Data AS
(   SELECT  p.PortfolioGroupID, 
            p.PortfolioGroupCode, 
            p.DisplayOrder, 
            p.MemberCode, 
            m.ContactCode, 
            m.Custom01, 
            RowNumber = ROW_NUMBER() OVER(PARTITION BY P.PortfolioGroupID ORDER BY p.DisplayOrder)
    FROM    [APXFirm].[AdvApp].[vPortfolioGroupMemberFlattened] p
            LEFT OUTER JOIN [APXFirm].[AdvApp].[vPortfolioInterestedParty] m
                ON p.memberid = m.PortfolioID
    WHERE   m.ContactCode is not null
    AND     p.PortfolioGroupCode like '%_Package'
)
SELECT  d.PortfolioGroupID, 
        d.PortfolioGroupCode, 
        d.DisplayOrder, 
        d.MemberCode, 
        d.ContactCode, 
        d.Custom01, 
        t.PDFType
FROM    Data d
        CROSS JOIN 
        (   VALUES
                ('Cover'),
                ('Seperator'),
                ('Report')
        ) t (PDFType)
WHERE   d.RowNumber = 1
OR      t.PDFType != 'Cover'
ORDER BY ContactCode, MemberCode;

SQL Fiddle पर उदाहरण




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में MSSQL में इन्सर्ट आईडी कैसे प्राप्त करें?

  2. एक अमान्य फ़्लोटिंग पॉइंट ऑपरेशन हुआ

  3. वास्तविक जीवन का उदाहरण, SQL में OUTER / CROSS APPLY का उपयोग कब करें

  4. SQL 2005 पिवट का उपयोग करना

  5. डिफ़ॉल्ट सिस्टमडेट को ymd से dmy . में कैसे बदलें