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

(私たちにとって)送料を節約するために、複数の注文を同じ人に、同じ住所に 1 つの印刷伝票で送ることができれば理想的です。このためには、ID 1、3、4 の一意のレコードが必要です。

CityおよびZipコードは、ユーザーが入力することはできません (ドロップダウンから選択) 。

理想的には、クエリによって次のものが返されることを望みます。

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 アルゴリズムは次の列で同様のグループ化を行っています: Name, Email, concat(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 に答える