ItemNo Name Requested Qty
850045 MICHAEL 46 1045
850045 MICHAEL JACKSON 38 834
850045 LARRY SHEARIN 22 473
850045 Michael Jackson 11 233
850045 Larry 5 84
我有一张表,其中请求者名称未规范化。迈克尔和迈克尔杰克是同一个人。 Larry和Larry Shearin也是同一个人。有没有办法组合行数据,以便Requested和Qty也正确总结?我当时认为可能有某种Oracle功能或分析可以做到这一点......
ItemNo Name Requested Qty
850045 MICHAEL JACKSON 95 2112
850045 LARRY SHEARIN 27 557
答案 0 :(得分:1)
可能有另一种方法,但这应该可以使用UPPER并将任何名字(没有空格)与任何全名(带空格)匹配 - 如果多个全名匹配,那么结果将是不准确的。
SELECT T.ItemNo,
T.Name,
T.Requested + T2.Requested Requested,
T.Qty + T2.Qty Qty
FROM (
SELECT ItemNo, UPPER(Name) as Name, SUM(Requested) Requested, SUM(Qty) Qty
FROM YourTable
WHERE Name LIKE '% %'
GROUP BY ItemNo, UPPER(Name)
) T
JOIN (
SELECT ItemNo, UPPER(Name) as Name, SUM(Requested) Requested, SUM(Qty) Qty
FROM YourTable
WHERE Name NOT LIKE '% %'
GROUP BY ItemNo, UPPER(Name)
) T2 ON T.ItemNo = T2.ItemNo AND T.Name LIKE T2.Name||' %'
这是SQL Fiddle。
以下是结果:
ITEMNO NAME REQUESTED QTY
850045 MICHAEL JACKSON 95 2112
850045 LARRY SHEARIN 27 557
我猜你拉里的总数(32)是错误的(22 + 5)?
希望这有帮助。