1

私は次のようなトランザクションのテーブルを持っています

| ID | Trans Type | Date       | Qty | Total | Item Number | Work Order |
-------------------------------------------------------------------------
|  1 | Issue      | 11/27/2012 |   3 |  3.50 |        NULL |         10 |
|  2 | Issue      | 11/27/2012 |   3 |  3.50 |        NULL |         11 |
|  3 | Issue      | 11/25/2012 |   1 |  1.25 |        NULL |         12 |
|  4 | ID Issue   | 11/27/2012 |  -3 | -3.50 |         100 |       NULL |
|  5 | ID Issue   | 11/27/2012 |  -3 | -3.50 |         102 |       NULL |
|  6 | ID Issue   | 11/25/2012 |  -1 | -1.25 |         104 |       NULL |

これらのトランザクションは重複しており、「Issue」には作業指示IDがあり、「IDIssue」トランザクションにはアイテム番号があります。「発行」トランザクションの[アイテム番号]フィールドを更新して、アイテム番号を含めたいと思います。日付、数量、合計で参加すると、次のようになります

| ID | Trans Type | Date       | Qty | Total | Item Number | Work Order |
-------------------------------------------------------------------------
|  1 | Issue      | 11/27/2012 |   3 |  3.50 |         100 |         10 |
|  1 | Issue      | 11/27/2012 |   3 |  3.50 |         102 |         10 |
|  2 | Issue      | 11/27/2012 |   3 |  3.50 |         100 |         11 |
|  2 | Issue      | 11/27/2012 |   3 |  3.50 |         102 |         11 |
|  3 | Issue      | 11/25/2012 |   1 |  1.25 |         104 |         12 |

重複が乗算されます!私はこれが欲しい

| ID | Trans Type | Date       | Qty | Total | Item Number | Work Order |
-------------------------------------------------------------------------
|  1 | Issue      | 11/27/2012 |   3 |  3.50 |         100 |         10 |
|  2 | Issue      | 11/27/2012 |   3 |  3.50 |         102 |         11 |
|  3 | Issue      | 11/25/2012 |   1 |  1.25 |         104 |         12 |

またはこれ(アイテム番号は2つの試合で切り替えられます)

| ID | Trans Type | Date       | Qty | Total | Item Number | Work Order |
-------------------------------------------------------------------------
|  1 | Issue      | 11/27/2012 |   3 |  3.50 |         102 |         10 |
|  2 | Issue      | 11/27/2012 |   3 |  3.50 |         100 |         11 |
|  3 | Issue      | 11/25/2012 |   1 |  1.25 |         104 |         12 |

どちらでも構いません。簡単な解決策は何でしょうか?

4

1 に答える 1

0

SELECT DISTINCT同じ結果を除外するために使用するか、結果を分割して各グループの最初の項目を取得することができます。

アップデート

パーティションアプローチを説明するコードは次のとおりです。

SELECT ID, [Trans Type], [Date], [Qty], [Total], [Item Number], [Work Order]
FROM
(
    SELECT 
        ID, [Trans Type], [Date], [Qty], [Total], [Item Number], [Work Order], ROW_NUMBER() OVER 
            (PARTITION BY ID, [Trans Type], [Date], [Qty], [Total]
             ORDER BY [Item Number]) AS ItemRank
    FROM YourTable
) AS SubQuery
WHERE ItemRank = 1
于 2012-11-27T21:36:57.117 に答える