Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

показва празни места за повтарящи се стойности в набор от резултати

Обвийте съществуващата си заявка в CTE, като добавите ROW_NUMBER OVER PARTITION BY вашите колони, което ще създаде 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

PS:Коригирах също така използването на обединения в стар стил. Тази употреба е остаряла преди повече от 20 години с въвеждането на стандартите SQL-92. Трябва да избягвате да ги използвате.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо преобразуването от DATETIME в DATETIME2 изглежда променя стойността?

  2. Операторът INSERT е в конфликт с ограничението FOREIGN KEY

  3. Съкратете всички таблици в база данни в SQL Server - SQL Server / TSQL урок, част 55

  4. Предавайте тип стойност на таблица към съхранена процедура на SQL Server чрез Entity Framework

  5. SQL Server 2008:ТОП 10 и различни заедно