sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server-fråga för att dölja kolumndata för dubbletter av rader. Vill inte ta bort en dubblettrad

Det här ser ut som en galen lösning, men du kan uppnå det med fönsterfunktion ROW_NUMBER() och med CASE uttryckskontroll om radnummer är högre än 1, något i stil med:

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

Titta på datatyper, om det finns Amt är INT bör du konvertera den till sträng om du vill få ett tomt värde.




  1. Returnera dag, månad och år i MySQL

  2. MySQL lagrad procedur som accepterar sträng med flera parametrar

  3. SQLite - Ta bort data

  4. SQL mindre än eller lika med (=) operatör för nybörjare