我正在寻找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出现在Date之后6个月内的次数。
有没有最好的方法来实现这个目标?谢天谢地。
答案 0 :(得分: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
我认为你可以跳过&gt; 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
可能有前一个和下一个后退