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

ビューから重複レコードを削除する

    一部またはすべての苦情番号のレコードが重複している必要があるため、DISTINCTを使用します 動作しないでしょう。

    などの単純なテーブルについて考えてみます。
    Column1    |    Column2
    -----------+------------
    A          |    X
    A          |    Y
    

    Column1 =Aのレコードが1つだけ必要な場合、SQLにはXとYのどちらをColumn2に配置するかを知る方法がありません。これはあなたが抱えているのと同じ問題ですが、2つではなく19の列があります。各苦情番号にどの行を表示するかを決定する方法について、何らかのロジックを実装する必要があります。したがって、上記の表でXをColumn2に表示する場合は、次のクエリを使用します。

    SELECT  Column1,
            Column2
    FROM    (   SELECT  Column1,
                        Column2,
                        ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column2 ASC) [RowNumber]
                FROM    MyTable
            ) t
    WHERE   RowNumber = 1
    

    ここでは、ROW_NUMBER()を使用しています 各行に優先順位を付けてから、優先順位が最も高い行のみを表示する関数。それらがどのような順序で出てきたかを気にしない場合は、このようなものを使用してランダムな行を選択する可能性があります。

    ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY NEWID()) [RowNumber]
    

    クエリに適用するロジックがわからないため、必要なものを正確に投稿することはできませんが、開始することはできます。

    SELECT  [Complaint Number],
            [Complaint_For],
            [Total_Complaint_Qty],
            [Defects],
            [Customer Code ],
            [Location],
            [CutomerName],
            [KUNUM],
            [QMNUM],
            [Responsible_KAM]
    FROM    (   SELECT  [Complaint Number],
                        [Complaint_For],
                        [Total_Complaint_Qty],
                        [Defects],
                        [Customer Code ],
                        [Location],
                        [CutomerName],
                        [KUNUM],
                        [QMNUM],
                        [Responsible_KAM],
                        ROW_NUMBER() OVER(PARTITION BY [Complaint Number] ORDER BY Complaint_For, Defects) AS RowNumber
                FROM    [CCCMPREPOSITORY].[dbo].[VW_Final_]
            ) data
    WHERE   RowNumber = 1
    

    ORDER BYをいじるだけです。 ROW_NUMBER内 ニーズに合わせて機能します。



    1. Mysql Real EscapeStringPHP関数マイフィールドエントリに\を追加

    2. symfony2で複数のテーブルを結合するにはどうすればよいですか?

    3. C++を使用してmysqlに接続します

    4. BIDSSSRSでのテーブルとチャートの配置