我有一个具有如下数据的遗留表,我试图选择具有一个列的唯一记录,该列将根据被认为是重复的记录的值来计算:
请注意,为了简单起见,我认为Is_hit和Is_recvd的值是相同的,但可能有所不同。
Case Source Is_Hit Is_recvd
27887024 MHC null null
27887024 MHC true true
27887024 DSC true true
27887024 CSD null null
27886949 DSC null null
27886949 DSC true null
27884761 MHC true true
27884761 MHC true true根据(Case + Source)的组合,记录据说是唯一的。
Is_hit应计算为:真和空的组合应导致真组合,真和真的组合应导致真和空的真组合。
应该计算Is_recvd (逻辑与is_hit相同):真和空的组合应该导致真的组合,真和真的组合应该导致真和空的真组合。
现在,对于上述情况,预期结果是:
Case Source Is_Hit Is_recvd
27887024 MHC true true
27887024 DSC true true
27887024 CSD null null
27886949 DSC true null
27884761 MHC true true注意:所有列都被认为是varchar类型。
发布于 2022-10-10 20:48:04
使用MAX函数的简单聚合将完成此工作,请尝试以下操作:
SELECT [case], Source, MAX(Is_Hit) Is_Hit, MAX(Is_recvd) Is_recvd
FROM table_name
GROUP BY [case], Source
ORDER BY [case] DESC, Source DESC看一个演示。
https://stackoverflow.com/questions/74020312
复制相似问题