2017-08-01 4 views
1

重複する行の列データを非表示にするSQL Serverクエリ。重複行を削除したくない。条件付きでデータを空白として表示します。重複する列の列データを非表示にするSQL Serverクエリ。重複する行を削除したくない

私は、このSQLクエリを実行し、:

select 
    [Vch No.], [Vch Type], [Vch Ref], 
    [Date], [Party Name], [Sales Ledger], 
    [Amt], [GST Ledger], [TaxAmount], [Total] 
from 
    [AccountData] 

私はこの出力を取得しています:

enter image description here

をしかし、私はこのフォーマットで出力を必要とする:

enter image description here

2番目の印刷画面[Vch Ref]、[Date]、[Party Name]、[Sales Ledger]、[Amt]、Totalの値を表示するものではありません。

+4

これは実際にはアプリケーション層で行い、データベースでは行いません。 –

+0

私はExcelにデータをエクスポートしており、その間にアプリケーション層はありません。 –

+0

GST元帳が異なるので、実際には重複している行ではないので、それを表示したい –

答えて

2

これは狂気の一つの解決策のように見えますが、行数が1よりも大きい場合は、ウィンドウ機能ROW_NUMBER()を使用してCASE表現のチェックを使用してそれを達成することができ、のようなもの:Amtがあった場合、

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 

データ型を見あなたが空白の値を取得したい場合はINTです。

関連する問題