这是我的问题:如何使用带有 group by 的聚合函数来维护记录完整性?
为了进一步解释,这里有一个例子。
我有一个包含以下列的表:(将其视为“订单”表)
Customer_Summary (first 10 char of name + first 10 char of address)
Customer_Name
Customer_Address
Customer_Postal Code
Order_weekday
每个“订单”有一行,有很多行具有相同的客户名称、地址和摘要。
我要做的是显示客户的姓名、地址和邮政编码,以及他们在每个工作日下的订单数量,按客户的摘要分组。
所以数据应该是这样的:
Summary | Name | Address | PCode | Monday | Tuesday | Wednesday | Thursday | Friday
test custntest addre|test custname|test address|123456 | 1 | 1 | 1 | 1 | 1
我只想将类似客户摘要的记录分组在一起,但显然我希望显示一个姓名、地址和邮政编码。我目前正在使用 min(),所以我的查询如下所示:
SELECT Customer_Summary, min(customer_name), min(customer_address), min(customer_postal_code)
FROM Order
Group by customer_summary
我省略了我的工作日逻辑,因为我认为没有必要。
我的问题是——其中一些具有相同客户摘要的客户具有不同的地址和邮政编码。
所以我可能有两个客户,看起来像:
test custntest addre|test custname |test address |323456|
test custntest addre|test custname2|test address2|123456|
使用 group by,我的查询将返回以下内容:
test custntest addre|test custname |test address |123456|
由于我使用的是 min,它将为我提供所有字段的最小值,但不一定来自同一记录。所以我在这里失去了我的记录完整性 - 查询返回的地址和名称与邮政编码不正确匹配。
那么在使用 group by 子句时如何维护非分组字段的数据完整性呢?
希望我解释得足够清楚,并提前感谢您的帮助。
编辑:解决。谢谢大家!