我有两张不同约会日期的表。
表1
id start date
1 5/1/14
2 3/2/14
3 4/5/14
4 9/6/14
5 10/7/14
表2
id start date
1 4/7/14
1 4/10/14
1 7/11/13
2 2/6/14
2 2/7/14
3 1/1/14
3 1/2/14
3 1/3/14
如果我设定了日期范围,我可以计算每个约会日期,但我需要更改日期范围。 对于表1中的每个id,我需要添加表2中的不同约会日期但仅限 表1开始日期前6个月。 示例:计算ID为1的所有不同约会日期(表2),约会日期为12/1/13至5/1/14(之前6个月)。所以结果是2 ... 4/7/14和4/10/14在内,7/1/13在6个月之外。
所以我的问题是每个记录的范围都在变化,我似乎无法弄清楚如何编码。对于id 2,日期范围将是9/1 / 14-3 / 2/14,依此类推。
提前感谢大家!
答案 0 :(得分:0)
我认为你想要的是一种联接。
select t1.id, count(t2.id) as numt2dates
from table1 t1 left outer join
table2 t2
on t1.id = t2.id and
t2.startdate between dateadd(month, -6, t1.startdate) and t1.startdate
group by t1.id;
日期算术的确切语法取决于数据库。
答案 1 :(得分:0)
试试这个:
SELECT id,
(
SELECT COUNT(*)
FROM table2
WHERE id = table1.id
AND table2.start_date >= DATEADD(MM,-6,table1.start_date)
) AS table2records
FROM table1
DATEADD从table1中的日期开始减去6个月,子查询返回相关记录的数量。