根据表2中的多列返回表1中的值

时间:2013-11-11 01:32:00

标签: sql-server search where multiple-columns

我希望能够根据表2中的多列返回表1中的值。

表1

ID eventDate价格

111 2013-09-01 103

111 2013-10-04 103.5

111 2013-11-01 115

111 2013-11-02 114.5

111 2013-11-05 114

111 2013-11-09 112

112 2013-10-20 103

111 2013-10-23 103.5

111 2013-10-24 103

111 2013-10-25 103

111 2013-10-26 103

111 2013-10-27 103

等...

表2示例:

ID startDate endDAte

111 2013-11-01 2013-11-05

112 2013-10-23 2013-11-07

113 2013-11-02 2013-11-03

114 2013-10-15 2013-11-01

115 2013-11-02 2013-11-05

我想根据表2返回表1中的结果 对于表2中的每一行,我想从表1中得到以下结果...... 对于ID 111,我想知道表1的“startDate”和“endDate”之间的每个日期和价格。我想要表2中每行的这些信息。如果我只关心一个ID,我会写一个简单的查询,如...

选择ID,eventDate,Price 从表1 where(ID = 111)和(startDate和endDate之间的eventDate)

这会让我获得ID 111所需的结果,但我需要ID 112,113等的相同结果以及每个相应的结果startDate和endDate * ** *

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:2)

SELECT t2.ID, t1.EventDate, t1.Price
  FROM dbo.Table2 AS t2
  INNER JOIN dbo.Table1 AS t1
  ON t1.ID = t2.ID
  AND t1.EventDate >= t2.StartDate
  AND t1.EventDate < DATEADD(DAY, 1, t2.EndDate);

要预先提出有关我未在此处使用BETWEEN的问题/投诉,请阅读thisthis