Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

pokazuje puste miejsca dla powtarzających się wartości w zestawie wyników

Zapakuj istniejące zapytanie w CTE, dodając ROW_NUMBER OVER PARTITION BY Twoje kolumny, które utworzą RN dla każdej grupy wartości. W zewnętrznym zapytaniu po prostu użyj CASE, aby wybrać wartości, gdzie GRP_RN =1 i pusty ciąg w przeciwnym razie.

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:Poprawiłem również użycie złączeń w starym stylu. To użycie jest przestarzałe ponad 20 lat temu wraz z wprowadzeniem standardów SQL-92. Należy ich unikać.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolumna z funkcją DEFAULT, przekazać parametr lub określić wstawić wartości?

  2. Pula połączeń jest wolniejsza niż utrzymywanie jednego połączenia otwartego

  3. Sprawdź, czy zainstalowany jest serwer SQL (dowolna wersja)?

  4. Nie wybrano zestawu kopii zapasowych do przywrócenia SQL Server 2012

  5. Jak korzystać z funkcji SQL Server T-SQL SUM:5 przypadków użycia