一个简单的sql查询脚本

经常要给客服的导数据,有时数据会很多,通过php来执行会非常的费时间,而且会影响网站
这个时候可以使用sql脚本来进行:
举个例子:查询用户领取的微信红包金额(没有时间限制,这个不是好习惯)
此处是先把相应的要查询的用户id写在了 for_local_test表中,包含字段为user_id,charge_money 都为int类型,因为目前项目中金额都是整数,没有带角和分的

declare @user_id int--用来处理结果的变量  
DECLARE @charge_money DECIMAL
DECLARE @stime INT
DECLARE @etime INT

SET @stime = 1506787200
set @etime = 1510847999
 begin  
 --声明一个游标  
  Declare user_cur Cursor for   
  select    user_id from [MGUsers].[dbo].[for_local_test]  order by user_id desc ;---查询语句(查询所有用户)  

   --打开游标  
  Open user_cur   
  --循环并提取记录  
  Fetch Next From user_cur Into @user_id--取第一条记录存入@result中  
  While ( @@Fetch_Status=0 )     
        begin  
          --print @user_id---处理结果  
          --查询领取的红包
          SELECT @charge_money = sum(amount_price)  FROM [MGCenter].[dbo].[recharge_order] WHERE user_id = @user_id  and pay_status =1 and ctime >= @stime and ctime <= @etime

           if(@charge_money is null)
            BEGIN
             set @charge_money =0
            END   
         UPDATE [MGUsers].[dbo].[for_local_test] set charge_money = @charge_money WHERE user_id = @user_id

        --PRINT      @charge_money         
          Fetch Next From user_cur into @user_id----下一条  
       end   
  --关闭游标     
   Close user_cur
  --释放游标  
 Deallocate user_cur   
 end

执行完成后使用数据库的导出功能转成excal或者运营需要的格式,直接就完成了,有时候他们需要附加时间条件,直接在查询条件后面附加就可以了。

你可能感兴趣的:(sqlserver)