在MS SQL Server的基本游标(Basic Cursor in MS SQL Server)

2019-10-30 04:45发布

我要寻找在MSSS光标使用基本方向。

说有一个表, TABLE1 ,用2个字段( IDDate )。 该ID 不是唯一的关键。 该表通过ID记录事件,以及一些IDS频繁发生,一些很少。

例如:

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个月。

有没有办法去完成这一个最好的方法? 谢谢好心。

Answer 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 

可能事先已和旁边倒着



文章来源: Basic Cursor in MS SQL Server