SQL加入两个表

时间:2012-09-28 16:29:05

标签: sql sql-server join left-join

现在我有一张表可能有也可能没有特定日期的数据。但是,我想返回一个数据集,其中包含所有日期和填写其他列的空白数据。我想到另一个表中存储了“所有日期”,一个视图可以帮助我实现这一目标。如果有更好的方法,请告诉我。

表1

UserId    Date       Value1
1         9/2/2012   10
2         9/15/2012  5
1         9/17/2012  12
1         9/23/2012  4
2         9/25/2012  7

AllDates (记录了未来10年的每个日期)

Date
1/1/2012
1/2/2012
1/3/2012
...
...
...
12/31/2020

我想加入这两个表来返回9月份UserId = 1的数据集:

UserId    Date       Value1
1         9/1/2012   NULL
1         9/2/2012   10
1         9/3/2012   NULL
...
...
...
1         9/16/2012   NULL
1         9/17/2012   12
1         9/18/2012   NULL
...
...
...
1         9/23/2012  4
...
...
...
1         9/29/2012  NULL
1         9/30/2012  NULL

1 个答案:

答案 0 :(得分:3)

select a.Date, t.Value1
from AllDates a
left outer join table1 t on a.Date = t.Date and t.UserID = 1
where year(a.Date) = 2012 and month(a.Date) = 9    
order by a.Date