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