从Union中删除部分重复项



我有两个用于计费的数据集,我被要求提供一个总结这两个数据集的报告。我遇到了一个问题,系统在两个地方都显示了一些账单,因为一边是零件号和销售订单,另一边是项目和客户,我正在努力删除副本。

表post联合的格式如下

PR01 PR01PR02PR01PR01PR02

这样如何:

select *
from (
SELECT  *
, row_number() OVER(partition BY customer, NETT_PRICE, date_created ORDER BY CASE WHEN ref = 'ac' THEN 0 ELSE 1 END) AS sort
FROM    (
VALUES  (N'AC', N'ABC', 100, N'20/3/23', 123, 7001, N'PR01')
,   (N'AC', N'ABC', 150, N'20/3/23', 123, 7001, N'PR01')
,   (N'AC', N'ABC', 170, N'20/3/23', 123, 7002, N'PR02')
,   (N'FP', N'ABC', 100, N'20/3/23', NULL, NULL, N'PR01')
,   (N'FP', N'ABC', 150, N'20/3/23', NULL, NULL, N'PR01')
,   (N'FP', N'ABC', 200, N'20/3/23', NULL,NULL, N'PR02')
) t (REF,CUSTOMER,NETT_PRICE,DATE_CREATED,PART_NO,SALESORDER,PROJECT)
) x
where x.sort = 1

这"groups"按客户、价格和日期创建每个销售额,并通过执行订单来优先考虑AC ref。如果有多个ref,您可以添加更多的tie-breakers来订购。

最新更新