当前位置: 代码迷 >> Sql Server >> SQL 2000 查询有关问题
  详细解决方案

SQL 2000 查询有关问题

热度:92   发布时间:2016-04-24 09:20:42.0
SQL 2000 查询问题

------解决思路----------------------

create table #t
(
  卡号 nvarchar(20),
  持卡人 nvarchar(10),
  积分次数 int,
  积分日期 datetime,
  操作人 nvarchar(10),
  销售额 numeric(16,1),
  发生分 int,
  余积分 int,
  店号 nvarchar(10),
  最后一次兑换积分 int,
  最后一次余积分 int,
  最后一次兑换日期 datetime
)
go
insert into #t
select '83951',N'黄宝玉',4,'2014-06-12',N'徐苗',97.8,8,43,N'1号店',NULL,NULL,NULL UNION ALL
SELECT '85157',NULL,4,'2014-10-07',N'李秋英',375.4,7,92,N'1号店',-100,9,'2013-10-05' UNION ALL
SELECT '87166',N'黄阿兰',4,'2014-06-29',N'凡艳芳',171.7,13,83,N'1号店',-30,269,'2014-06-29' union all
SELECT '87166',N'黄阿兰',6,'2014-12-26',N'凡小霞',1736.5,156,253,N'1号店',-30,269,'2014-06-29'



declare @卡号 nvarchar(20)
declare  @持卡人 nvarchar(10)
declare  @积分次数 int
declare  @积分日期 datetime
declare  @操作人 nvarchar(10)
declare  @销售额 numeric(16,1)
declare  @发生分 int
declare  @余积分 int
declare  @店号 nvarchar(10)
declare  @最后一次兑换积分 int
declare  @最后一次余积分 int
declare  @最后一次兑换日期 datetime

select * into #t1 from #t where 1=2
declare cur_c1 cursor fast_forward for select * from #t
open cur_c1
fetch next from cur_c1 into @卡号,@持卡人,@积分次数,@积分日期,@操作人,@销售额,@发生分,@余积分,@店号,@最后一次兑换积分,@最后一次余积分,@最后一次兑换日期

while @@FETCH_STATUS = 0
begin
   if not exists(select 1 from #t1 where 卡号 = @卡号)  
   insert into #t1 select @卡号,@持卡人,@积分次数,@积分日期,@操作人,@销售额,@发生分,@余积分,@店号,@最后一次兑换积分,@最后一次余积分,@最后一次兑换日期
   else
   insert into #t1 select @卡号,@持卡人,@积分次数,@积分日期,@操作人,@销售额,@发生分,@余积分,@店号,NULL,NULL,NULL
   
   fetch next from cur_c1 into @卡号,@持卡人,@积分次数,@积分日期,@操作人,@销售额,@发生分,@余积分,@店号,@最后一次兑换积分,@最后一次余积分,@最后一次兑换日期
   
end
CLOSE CUR_C1
DEALLOCATE CUR_C1
SELECT * FROM #T1

drop table #t
drop table #t1


  
------解决思路----------------------
SELECT T1.卡号,T1.持卡人,T1.积分次数,T1.积分日期,T1.操作人,T1.销售额,T1.发生分,T1.余积分,T1.店号
,T4.最后一次兑换积分,T4.最后一次余积分,T4.最后一次兑换日期--其他最后一次的列用T4前缀加在这
FROM #t T1 LEFT JOIN
(SELECT * FROM #t T2 WHERE NOT EXISTS(SELECT 1 FROM #t T3 WHERE T2.卡号=T3.卡号 AND T3.积分日期<T2.积分日期))
T4 ON T1.卡号=T4.卡号 AND T1.积分日期=T4.积分日期
借用#3楼的表数据
  相关解决方案