好象是比较两个时间的某种差异.
解决方案 »
- sql竖表变横表问题
- sql 语句查询
- 如果做这个统计,大家看下
- 什么时候用存储过程?
- 你好,我是大力的马甲,我遇到了一个问题,来请教比"偶"高的高手,这个问题怎么做?????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~!!!!!!!
- 从不定数量的表中取数据,是否不能写成视图??有什么好办法请推荐!
- *********问问题,关于导入数据*************
- 我在我的程序里创建了一个临时表#t,然后我在sql server 2000查询分析器里"select * from #t"确得到提示“对象名 '#t' 无效。”why?
- About performance tuning
- 关于三层数据库代码生成器的问题
- 100分求一数据分类结构设计思路/ 或者alibaba产品分类及检索设计结构
- 比如表中有好多数据,我想查最后一条,但是这个表对信息没有编号,我要怎么查最后一条的信息呢??
处理结果应该是取日期d1到d2间的3个月,分别赋给c1,c2,c3
如d1='2008-1-1',d2='2008-4-1',即得出c1='200801',c2='200802',c3='200803'
如d1='2007-12-1',d2='2008-2-1' 可得出c1='200712',c2='200801',c3='200802'
declare @ym varchar(12),@y varchar(4),@m varchar(2),@c1 varchar(12),@c2 varchar(12),@c3 varchar(12)
declare @y1 int,@y2 int,@m1 int ,@m2 int
set @y1=DATEPART(year,@d1)
set @y2=DATEPART(year,@d2)
set @m1=DATEPART(month,@d1)
set @m2=DATEPART(month,@d2)
--select @y1,@y2,@m1,@m2
declare @i int,@j int,@n1 int,@n2 int
set @c1=''
set @c2=''
set @c3='' if @y2-@y1>1
return
if @m1>9
begin
if @m2+13-@m1>3 --m2与m1超过3个月
return
else
begin
set @j=1
set @n1=@y1*100+@m1 --转为yyyymm的整数
set @n2=@y2*100+@m2
set @i=@n1
while @i <= @n2
begin
set @ym=convert(varchar(6),@i)
if @j=1
set @c1=@ym
else
if @j=2
set @c2=@ym
else
set @c3=@ym
if convert(int,right(convert(varchar(12),@i),2))=12 --如果为12月时
begin
set @i=@i+89 --如果为12月时+89转为+1年
end
else
set @i=@i+1
set @j=@j+1
end --c1,c2,c3应该分别为第1个月,第2个月,第3个月 end
end
else --@m1 <=9 以下代码为处理月份<=9月的情况,所得的c1,c2,c3与上面情况相同
begin
if (@m2-@m1+1>3) or (@m2 <@m1)
return
else
begin
set @j=1
set @n1=@y1*100+@m1
set @n2=@y2*100+@m2
set @i=@n1
--select @n1,@n2
while @i <= @n2
begin
set @ym=convert(varchar(6),@i)
if @j=1
set @c1=@ym
else
if @j=2
set @c2=@ym
else
set @c3=@ym
set @j=@j+1
set @i=@i+1
end
end