sql >> データベース >  >> RDS >> Sqlserver

重複する行の列データを非表示にする SQL Server クエリ。重複行を削除したくない

    これはクレイジーな解決策のように見えますが、ウィンドウ関数 ROW_NUMBER() を使用して実現できます CASE を使用する 次のように、行番号が 1 より大きいかどうかをチェックする式:

    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
      

    Amt がある場合は、データ型を調べます 空白の値を取得したい場合は、INT を文字列に変換する必要があります。




    1. mysql:システムテーブルにトリガーを作成できませんか?

    2. 再帰的なmysqlselect?

    3. mysqlが一部の自動インクリメントIDをスキップするのはなぜですか?

    4. SQLServerとMYSQL間のレプリケーション