一部の列が比較され、一部が無視されるテーブルに重複する行セットが存在するかどうかをテストできる T-SQL 関数を作成したいと考えています。
たとえば、次のデータ セットを考えてみましょう。
BomID PartNumber ItemNumber Quantity UnitID
4164 10004001 10001419 1 33
4169 10004001 103599 1 33
4171 10004001 103601 1 33
4163 10004001 10001329 10 33
4166 10004001 101823 8 33
10794 10012161 10001419 1 33
10799 10012161 103599 1 33
10801 10012161 103601 1 33
10793 10012161 10001329 10 33
10796 10012161 101823 8 33
10004001Bom.f_GetPartsThatHaveAnIdenticalBom(partNumber)
が渡されたときに、 10012161が tuple を比較することによって決定される重複レコードを持っていることを効率的に検出できる関数を書きたいと思います。キー フィールドBomIDは無視されます。したがって、この関数は、同一の BOM を持つ部品番号 (存在する場合) の個別のリストを返します。(ItemNumber, Quantity, UnitID)
この操作は、さまざまな手法を使用して手動で行いました。しかし、このルーチンがますます頻繁に必要になっているように思われるので、セットベースで非常に効率的で、LINQ to Entities クエリで他のテーブルと組み合わせられる関数が必要です。