2010-12-14 10 views
0

と混同しては、私は現在、このクエリを持っています。 'Orders'テーブルには、 'PaymentTotal'というフィールドがありますが、MAX(orders.orderdate)から返された値に基づいてこれを取得するにはどうすればよいですか? (つまり、電子メールごとに最後の注文額を取得しようとしています)SQL集計

+0

あなたが話しているSQLサーバーを知っておくと便利です。 – Wolph

+0

私はこれがASP(.net)ベースのショッピングカートでパッケージ化されたMS-SQLだと思っています。(したがって私の前提はMSです) – Prinzovdarkness

答えて

3
select c.EmailAddress, om.MaxOrderDate, o.PaymentTotal 
from (
    select CustomerID, MAX(orders.orderdate) as MaxOrderDate 
    from orders 
    group by CustomerID 
) om 
inner join orders o on om.CustomerID = o.CustomerID 
    and om.MaxOrderDate = o.orderdate 
inner join customers c on o.customerID = c.customerID  
+0

私はorderdateが必要であると思っていますそうでなければ期待される結果を返しません。 orderdate列の型が何であるのだろう... – Jay

+0

Orderdateはdatetimeです。すべての助けに感謝します。だから誰かが上記のクエリで何が起こったのか分からない?私は実際に次の時間にこれを行うことができるように学びたいと思うでしょう:) – Prinzovdarkness

+0

サブクエリ "om"が顧客IDと日付を見つけたら、その値を注文と顧客テーブルに戻して顧客と合計を検索しますその注文のために。 – asawyer