0
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

我有一个请求者名称未标准化的表。迈克尔和迈克尔杰克是同一个人。拉里和拉里·希林也是同一个人。有没有办法组合行数据,以便 Requested 和 Qty 也正确总结?我在想可能有某种Oracle函数或分析可以做到这一点......

ItemNo  Name      Requested Qty
850045  MICHAEL JACKSON 95  2112
850045  LARRY SHEARIN   27  557
4

1 回答 1

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 小提琴

结果如下:

ITEMNO  NAME            REQUESTED  QTY
850045  MICHAEL JACKSON 95         2112
850045  LARRY SHEARIN   27         557

我假设你是总(32)拉里被误认为上面(22 + 5)?

希望这可以帮助。

于 2013-02-15T01:55:22.623 回答