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

Zapytanie SQL Server w celu ukrycia zduplikowanych danych kolumn wierszy. Nie chcę usuwać zduplikowanego wiersza

To wygląda na szalone rozwiązanie, ale możesz to osiągnąć za pomocą funkcji okienkowej ROW_NUMBER() i używając CASE wyrażenie sprawdź, czy numer wiersza jest wyższy niż 1, coś takiego:

select 
    [Vch No.],
    [Vch Type],
    case when rn > 1 then '' else [Vch Ref] end as [Vch Ref],
    case when rn > 1 then '' else [Date] end as [Date],
    case when rn > 1 then '' else [Party Name] end as [Party Name],
    case when rn > 1 then '' else [Sales Ledger] end as [Sales Ledger],
    case when rn > 1 then '' else [Amt] end as [Amt],
    [GST Ledger],
    [TaxAmount],
    case when rn > 1 then '' else [Total] end as [Total]
from (  
    select 
        [Vch No.],
        [Vch Type],
        [Vch Ref],
        [Date],
        [Party Name],
        [Sales Ledger],
        [Amt],
        [GST Ledger],
        [TaxAmount],
        [Total], 
        row_number() over (partition by [Vch No.],[Vch Type],[Vch Ref],[Date],[Party Name],[Sales Ledger],[Amt],[GST Ledger],[TaxAmount],[Total] order by [Vch No.]) rn
    from [AccountData]
)x

Spójrz na typy danych, jeśli istnieje Amt jest INT, powinieneś przekonwertować go na łańcuch, jeśli chcesz uzyskać pustą wartość.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie bazy danych w SQL Server 2012, skrypt i użycie w 2008?

  2. SQL Server i luki w zabezpieczeniach Spectre/Meltdown

  3. Czy powinienem używać typu danych SQL_Variant?

  4. Zwracanie procedur i funkcji składowanych w bazie danych programu SQL Server:PROCEDURY (przykłady T-SQL)

  5. Co to jest limit czasu połączenia w ciągu połączenia serwera sql?