0

次のようなトランザクション テーブルと履歴テーブルを使用して SQL クエリを実行しようとしています。

履歴表:

Active Date    Inactive Date    Attribute   CustID
1/1/2013        1/15/2013         Blue         A 
1/15/2013       1/30/2013         Green        A

トランザクション テーブル:

Transaction Date     CustID
1/12/2013              A
1/28/2013              A

And I would want to return 

結果:

Transaction Date     CustID   Attribute 
1/12/2013              A        Blue
1/28/2013              A        Green

どんな助けでも大歓迎です!

4

2 に答える 2

0

と の両方を使用JOINして、 でテーブルを作成できます。custidtransaction dateactive dateinactive date

select t.`transaction date`,
  t.custid,
  h.attribute
from transactions t
inner join historical h
  on t.custid = h.custid
  and t.`transaction date` >= h.`Active Date`
  and t.`transaction date` <= h.`Inactive Date`

デモで SQL Fiddle を参照してください

于 2013-03-06T16:55:16.000 に答える
0

私が結果を見たように、歴史的なテーブルからのとの日付date of the transactionの間に落ちます。この結果は、2 つの日付に一致し、2 つの日付の間にあるという 2 つの条件でテーブルを結合することによって達成できます。Active DateinActiveCustID

SELECT  a.*, b.Attribute
FROM    TransactionTable a
        INNER JOIN HistoricalTable b
            ON  a.CustID = b.CustID AND
                a.TransactionDATE BETWEEN b.ActiveDate AND b.InActiveDATE

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

于 2013-03-06T16:55:30.830 に答える