科力德一卡通系统查询SQL重写

      公司一直用的是科力德的一卡通系统,由于数据越来越大,直接用科力德一卡通系统客户端查询数据异常慢,查一周的数据4774笔消费明细数据,需要1分30秒,查询一个月的不知道要多久(一直忙的状态),业务部门每月都要用消费数据做汇总,必须查询出来做汇总分析,如是经分析,了解了一卡通系统的数据结构,查询效率快得多,查一个月的数据3万多笔,也才3秒钟,现将查询代码分享给使用该系统的朋友们!

/***********************************************************
* Procedure description:查询消费明细
* Date:   2013-5-30 
* Author: 
*
* Changes
* Date		Modified By			Comments
************************************************************
exec Prg_FindXFData '20130501','20130530'
************************************************************/
Alter PROCEDURE dbo.Prg_FindXFData
(
	@XFBegindate varchar(8),--消费开始日期
    @XFEndDate varchar(8)  ,--消费结束日期
	@DevID tinyint=null,	--机号
	@MealType tinyint=null,		--餐类:1=早餐,2=中餐,3=晚餐
	@PersonCode varchar(20)=null,--卡编号
    @CardID int=null,			--卡流水号
    @CardType tinyint=null,		--卡类    
    @XFMoney   float=Null	   --
)
AS
set NOCOUNT ON
declare @sqlstr nvarchar(max),@wherestr nvarchar(4000)
set @wherestr=''
if @DevID is not null
   set @wherestr=@wherestr+' And C.DevID'+CAST(@DevID AS varchar(10))
if @MealType is not NULL
   set @wherestr=@wherestr+' And C.MealTypeID='+cast(@MealType as varchar(10))
if isnull(@PersonCode,'')<>''
   set @wherestr=@wherestr+' And D.EmpNo='''+@PersonCode+''''
if @CardID is not NULL
   set @wherestr=@wherestr+' And C.CardID='+@CardID
if @CardType is not NULL
   set @wherestr=@wherestr+' And C.CardTypeID'+@CardType
set @sqlstr='select C.DevID,c.XFPosDay,c.MealTypeID,E.MealTypeName,c.CardID,D.EmpNo,D.EmpName,c.CardTypeID,
			b.OMoneyValue,b.CardMoneyValue,b.CardUseNum,c.XFPosDate
           From XF_AccHead A inner join XF_AccTransDetail B on A.AccNo=B.AccNo
				             INNER JOIN XF_XFData c ON b.XFDataSysID=c.XFDataSysID
							 INNER JOIN RS_Emp D on A.EmpSysID=D.EmpSysID 
							 inner join XF_MealType E on C.MealTypeID=E.MealTypeID
				where C.XFPosDay>='''+convert(varchar(8),@XFBegindate,112)
				+''' And C.XFPosDay<'''+convert(varchar(8),dateadd(day,1,@XFEndDate),112)+''''+@wherestr
				+' order by C.CardID,C.XFPosDay'
exec (@sqlstr)					 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值