我想编写一个 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
我想编写一个函数Bom.f_GetPartsThatHaveAnIdenticalBom(partNumber)
,当通过10004001可以有效地检测到10012161具有通过比较 tuple 确定的重复记录(ItemNumber, Quantity, UnitID)
。忽略关键字段BomID。因此,该函数将返回具有相同 BOM 的零件编号(如果有)的不同列表。
我已经使用各种技术手动完成了这个操作。但是由于我似乎越来越频繁地需要这个例程,所以我希望有一个基于集合、高效并且可以与 LINQ to Entities 查询中的其他表组合的函数。