需求:
根据查询传入的参数,自动带出区间内的数据,表中有数据的状态显示已登入,无数据的状态显示未登入
问题:
目前系统中,只存有已登入的资料,且前台查询时输入的日期区间间隔不固定。
表结构如下:
门店表:存储门店明细信息
门店业绩表:存储门店每日业绩(需要门店每日登入当天的业绩,未登入的天,系统中则不存在此记录)
实现难点,需要用一个查询SQL,生成选择的日期区间的数据
幸好在SQL Server 2005及以后的版本中,出现了递归的功能,
用一下语句,实现了产出不定区间的日期数据记录:
WITH DT
AS
( SELECT cast( DateStart as datetime) as ep_date UNION ALL
SELECT DATEADD(Day,1,ep_date) FROM DT WHERE DATEADD(Day,1,ep_date) <=cast(DateEnd as datetime)
)
Select * from dt
之后,再改写以上的SQL ,实现需求:
WITH DT
AS
( SELECT cast( DateStart as datetime) as ep_date UNION ALL
SELECT DATEADD(Day,1,ep_date) FROM DT WHERE DATEADD(Day,1,ep_date) <=cast(DateEnd as datetime)
)
Select c.*,case when d.status is null then 1 lese 2 end as status
(Select a.ep_date,b.counter_no from dt a,counter b) c left join performance d on c.counter_no=d.counter_no and c.ep_date = d.ep_date
本文介绍如何使用SQL Server的递归查询功能生成指定日期范围内的所有日期记录,并结合左连接来标识这些日期中哪些已有数据录入,哪些尚未录入。
177

被折叠的 条评论
为什么被折叠?



