【发布时间】:2013-12-30 02:42:30
【问题描述】:
起初,我有一个如下所示的表格:
cust_id/Bill_amt/Brand/BrandA/BrandB/Total_value
100/350/A/NULL /NULL/NULL
100/250/A/NULL/NULL/NULL
100/100/B/NULL /NULL/NULL
300/200/B/NULL /NULL/NULL
我想将'null'值替换为同一客户的消费金额,从上表中可以看出,有重复客户的 cust_id 100,这是因为该客户同时购买了品牌 A 和B 在不同的日期,因此,我需要您的帮助将所有客户的所有内容汇总在一行中,将所有内容放在一行后,您会注意到有 3 行具有相同的记录(重复),如下图所示:
cust_id/Bill_amt/Brand/BrandA/BrandB/Total_value
100/350/A/600/100/700
100/250/A/600/100/700
100/100/B/600/100/700
300/200/B/0/200/200
例如,cust_id 100 为品牌 A 花费了 600 美元(350+250),而该客户只为品牌 B 花费了 100 美元(查看 cutomer_id 100 的第 3 行),因此,总价值为 700 美元(600+100 )。
我希望这个解释对你来说足够清楚。
如下所示更新表格后,我们将自行删除重复项。
请向我们提供 SQL 查询,以帮助我们用 bill_amt 的总和替换或更新“null”值,因为我们有 200000 加记录来执行此操作。
非常感谢您抽出宝贵时间回复我们。
【问题讨论】:
-
你需要标准化你的数据库。
-
@Leifingson 你能解释一下吗?
-
而不是专注于如何查询,你的重复问题是因为表没有规范化。您有一个 M:N 关系,需要 cust_id 和相应购买之间的交集表。这样一来,查询就像查询客户 ID 和他们的购买一样简单。
标签: sql sql-server sql-server-2008 sql-update sum