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在 thecustid和 the上的表transaction date同时使用active dateand inactive 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之间的落差。结果可以通过在两个条件下加入表来实现:它匹配并且它位于两个日期之间。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 回答