2017-04-21 27 views
1

私のプロジェクトでレポートを作成するのに助けが必要です。最新の取引日を持つ顧客リストを表示するだけです。テーブルCUSTOMERとTRANSACTIONSには左結合を使用しました。最新の取引日を持つ顧客を表示する方法

もちろん、顧客のトランザクション数に基づいて顧客の複数の記録を表示します。顧客ごとに最新の取引を取得するにはどうすればよいですか?前もって感謝します!あなたがデータを結合した後、これを試してみてください

SELECT MAX(TNX.Date) 
FROM CUSTOMER CUST 
LEFT JOINT TRANSACTIONS TXN 
ON TNX.CUST_ID = CUST.ID 
GROUP BY CUST_ID 
+1

また、いくつかのサンプル表データと予想される結果を追加し、データベース – Hacker

+3

ポストの詳細trasection順序を与えます。 (全部書式付きのテキストです) – JohnHC

+2

に何のDESC –

答えて

1

あなたは、おそらくこのようなものを使用することができます。 abcデータは、顧客ごとに複数のトランザクションが存在する最終的なデータです。

+0

私は参照してください。完璧に動作します。ありがとう! –

1

使用max

select Cust.SomeColumn, 
     max(txn.SomeDateColumn) as MaxDate 
FROM CUSTOMER CUST 
LEFT JOINT TRANSACTIONS TXN 
ON TNX.CUST_ID = CUST.ID 
GROUP BY Cust.SomeColumn -- include every column that isn't being aggregated 
1

1

あなたが投稿したSQLから、取引テーブルにはすでに顧客IDと取引が含まれているようです。私はあなたがこれらのテーブルに参加したい理由が、IDではなく名前で顧客を参照することを推測しています。その場合には、あなたのSQLは、このような何かを見ている必要がありますJohnHCが述べたように

SELECT DISTINCT 
CUST.NAME, --Your field names may differ 
TXN.TRANSACTION_DATE --Your field names may differ 

FROM 
CUSTOMER CUST 
LEFT JOIN TRANSACTIONS TXN 
ON TNX.CUST_ID = CUST.ID 

ORDER BY 
TXN.TRANSACTION_DATE DESC 

を使用すると、テーブル内のデータの詳細を提供する場合、それはより参考になります。

+0

はい、あなたは正しいです。ありがとう –

0
SELECT * 
    FROM (
     SELECT customer, transactiondate 
     FROM abc 
     ORDER BY transactiondate) 
result 
GROUP BY customer,transactiondate 
+1

あなたの答えを編集して説明を加えてください。コードのみの回答は、今後のSO読者の教育にはほとんど役に立ちません。あなたの答えは低品質であるためにモデレーションキューにあります。 – mickmackusa