2017-03-20 8 views
0

私はcustomeridに基づいて顧客(tcustomers)のテーブルを持っています。私は購入履歴(tpurchasehist)と顧客IDを持つ別のテーブルを持っています。最初のテーブルに「Gold Member」というラベルのついたtwpカラムを追加しようとしています。購入列のエントリが '%Gold%'のようなもので、購入列の最新列が '%Purchased%'や '%Returned%'のようなものであれば、値は 'Yes'となります。私の問題は、カスタマーIDごとに複数の購入エントリがあるため、重複を作成せずに左の結合を行う方法を理解できないようです。SQL - 重複を作成せずに新しい列に結合する

SELECT tcustomers.custid 'Customer ID', 
     tcustomers.custname 'Name', 
     CASE 
      WHEN th.purchases LIKE '%Purchased%' THEN 'Customer Made a Purchase' 
      WHEN th.purchases like '%Returned%' THEN 'Customer Made a Return' 
     END 'Recent Activity', 
     CASE 
      WHEN th.purchases LIKE '%Gold%' THEN 'Yes' 
     END 'Gold Member?' 
FROM tcustomerss 
LEFT JOIN (
    SELECT DISTINCT th.custid, purchases, updated 
    FROM tpurchasehist 
    WHERE purchases LIKE '%Purchased%' 
     or purchases like '%Returned%' 
     or purchases like '%Gold%') 
) th ON tcustomers.custid = th.custid 
+1

お客様ごとに複数の購入イベントが存在するケースを処理するロジックを教えてください。この問題は自動的には解決されません。 –

+1

あなたの例は無効な標準SQLです。どのDBMSを使用していますか? –

答えて

0

あなたは(内部クエリとして前のクエリを処理する)フェッチ記録にでパーティションを使用したレコード(付属重複)をフェッチまず、ウィンドウ機能を試してみてください、と最初を使用して所望の出力を取り出すことができますウィンドウ関数。

関連する問題