sql >> Database >  >> RDS >> Sqlserver

toont spaties voor het herhalen van waarden in een resultatenset

Wikkel uw bestaande zoekopdracht in CTE en voeg ROW_NUMBER OVER PARTITION BY toe uw kolommen, die RN's maken voor elke groep waarden. Gebruik in de buitenste query gewoon CASE om waarden te selecteren waarbij GRP_RN =1 en anders een lege string.

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

PS:Ik heb ook je gebruik van oude stijl-joins gecorrigeerd. Dat gebruik is meer dan 20 jaar geleden achterhaald met de introductie van SQL-92-standaarden. Je moet ze vermijden.




  1. Toon 3 items per rij - while loop - php/mysql

  2. Django - Rijen toevoegen aan MySQL-database

  3. Hoe parameter doorgeven aan sql 'in'-instructie?

  4. Hoe kan ik een unieke string per record genereren in een tabel in Postgres?