ROW_NUMBER OVER PARTITION BY
जोड़कर CTE में अपनी मौजूदा क्वेरी को रैप करें आपके कॉलम, जो मूल्यों के प्रत्येक समूह के लिए RN बनाएंगे। बाहरी क्वेरी में केवल उन मानों का चयन करने के लिए CASE का उपयोग करें जहां GRP_RN =1 और खाली स्ट्रिंग अन्यथा।
WITH CTE AS
(
Select distinct top 100000
o.EventSetName,
o.EventSetDisplay,
o.EventSetDescription,
o.ChildSetName,
ROW_NUMBER() Over (Order By f.ChildSetName) RN,
f.DocumentDispSequence,
f.SectionDispSequence,
o.ObsSetDispSequence,
null as NullColumnNeedsName,
ROW_NUMBER() OVER (PARTITION BY o.EventSetName, o.EventSetDisplay,o.EventSetDescription ORDER BY f.ChildSetName) GRP_RN
From ##ObsSetLevel o,
INNER JOIN ##Final f ON f.ChildSetName = o.EventSetName and o.EventSetName = @variableName
)
SELECT
CASE WHEN GRP_RN = 1 THEN o.EventSetName ELSE '' AS EventSetName,
CASE WHEN GRP_RN = 1 THEN o.EventSetDisplay ELSE '' AS EventSetDisplay,
CASE WHEN GRP_RN = 1 THEN o.EventSetDescription ELSE '' AS EventSetDescription,
other columns
FROM CTE
Order By RN asc, DocumentDispSequence asc, SectionDispSequence asc, o.ObsSetDispSequence asc
पुनश्च:मैंने आपके पुराने स्टाइल जॉइन के उपयोग को भी ठीक कर दिया है। SQL-92 मानकों की शुरूआत के साथ यह उपयोग 20 साल से अधिक पुराना है। आपको इनका इस्तेमाल करने से बचना चाहिए।ए>