我有两张不同约会日期的桌子。
表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在6个月之内,7/1/13在6个月之外。
因此,我的问题是,每个记录的范围都在变化,我似乎不知道如何编写this.For id 2,日期范围是9/1/14-3/2/14等等。
提前谢谢大家!
发布于 2014-06-01 14:18:21
试试这个:
SELECT id,
(
SELECT COUNT(*)
FROM table2
WHERE id = table1.id
AND table2.start_date >= DATEADD(MM,-6,table1.start_date)
) AS table2records
FROM table1DATEADD从table1中的日期起减去6个月,子查询返回相关记录的计数。
发布于 2014-06-01 14:08:41
我想你想要的是一种加入。
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;日期算法的确切语法取决于数据库。
发布于 2022-05-16 21:18:04
谢谢你这解决了我的问题。虽然这可能对您没有帮助,因为您没有尝试按日期分组。但答案给了我解决我所面临的问题的洞察力。
我试图收集用户总数,这是一个必须由多个字段评估的日期标准。
以数据为(选择generate_series( (日期‘2020-01’)::时间戳,现在(),间隔'1周‘)为日期) 从历史h中选择d.date,(从历史h中选择COUNT(DISTINCT h.id)作为user_count,其中h.startDate < d.date和h.endDate > d.date顺序由1 DESC指定)从数据d顺序选择d.date DESC为total_records
2022-05-16,15 2022-05-09,13 2022-05-02,13 .
https://stackoverflow.com/questions/23980662
复制相似问题