1

假设我有这张包含客户订单的表格:

orderid Name         Email      Address_1      Address_2  City*      Zip*
---------------------------------------------------------------------------   
1       James        j@j.com    12 Foo St                 Fooville   1001
2       Alice        a@a.com    92 Bla Road               Sville     3933
3       James        j@j.c0m    12 Foo Street             Fooville   1001
4       james king   j@j.com    12             Foo St     Fooville   1001
5       Anth         ann@h.com  12 Foo Street             Stacker    2932
6       James        j@j.com    12 American St            GiftCity   0283

为了节省邮费(对我们而言),如果我们可以在一张打印单上将多个订单发送到同一个人同一地址,那将是理想的选择。为此,我需要 id 1、3、4 的唯一记录。

和代码不能由用户输入(从下拉列表中选择)CityZip

理想情况下,我希望我的查询返回以下内容:

orderid Name    Email      Address_1      Address_2  City*      Zip*  Count
---------------------------------------------------------------------------   
1       James   j@j.com    12 Foo St                 Fooville   1001  3
2       Alice   a@a.com    92 Bla Road               Sville     3933  1
5       Anth    ann@h.com  12 Foo Street             Stacker    2932  1

从本质上讲,SQL 算法是在以下列上类似的方式进行分组:NameEmailconcat(Address_1 and Address_2)

任何建议和解决方案将不胜感激。

如果有办法做一个

GROUP BY similar((concat(name,email,address_1) 

(对于无望的伪代码真的很抱歉..只是想表达我的想法)。

4

1 回答 1

1

好吧,这里不是讨论,而是根据您的要求修改查询

select 
    orderid , 
    name , 
    email , 
    address_1 , 
    address_2 , 
    city , 
    zip , 
    count(orderid) 
from test 
group by name
order by orderid

带出这个

    Name        Email       Address_1    Address_2  City        Zip Count
1   James       j@j.com     12 Foo St           Fooville        1001    3
2   Alice       a@a.com     92 Bla Road         Sville          3933    1
4   James King  j@j.com     12 Foo St           Fooville        1001    1
5   Anth        ann@h.com   12 Foo St           Stacker         2932    1
于 2012-07-27T02:35:39.023 回答