0

我正在寻找 MSSS 中光标使用的基本方向。

假设有一个表 ,TABLE1有 2 个字段 ( ID, Date)。ID不是唯一键。该表按 id 记录事件,有些 id 经常发生,有些不经常发生。

例如:

ID  |  Date
1   |  2010-01-01
2   |  2010-02-01
3   |  2010-02-15
2   |  2010-02-15
4   |  2010-03-01

我想创建一个包含以下字段的新表:ID、日期、ID 出现在日期前 6 个月内的次数、ID 出现在日期后 6 个月内的次数。

有没有最好的方法来完成这个?非常感谢。

4

1 回答 1

1

这是一方面(我认为 - 未经测试)

select t1.id, t1.date, count(*) as 'count'
from table t1 
join table t2 
  on t2.id = t1.id
 and DateDiff(mm,t1.date,t2.date) <= 6 
 and DateDiff(mm,t1.date,t2.date) >  0 
group by t1.id, t1.date

我认为您可以跳过 > 0 和用例来计算正面和负面

sum(WHEN t1.date > t2.date then 0 else 1) as prior 
sum(WHEN t1.date < t2.date then 0 else 1) as next 

and DateDiff(mm,t1.date,t2.date) <= 6 
and DateDiff(mm,t2.date,t2.date) <= 6 

可能有前后倒退

于 2013-09-09T15:22:37.730 回答