sql >> Database >  >> RDS >> Sqlserver

SQL Server-query om dubbele rijkolomgegevens te verbergen. Ik wil geen dubbele rij verwijderen

Dit lijkt een gekke oplossing, maar je kunt het bereiken met de vensterfunctie ROW_NUMBER() en met behulp van CASE uitdrukking controleren als rijnummer hoger is dan 1, zoiets als:

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

Kijk naar datatypes, als er Amt is INT, je moet het converteren naar string als je een lege waarde wilt krijgen.




  1. Hoe geüploade bestanden op te halen met php

  2. Worden XA/JTA-transacties nog steeds gebruikt?

  3. MySQL-tabel met onjuist gecodeerde gegevens converteren naar UTF-8

  4. Een tijdstempel in Oracle invoegen in een specifiek formaat