2017-08-24 29 views
1

我创建了一个查询获取数据过去7天从table.now我想使这个查询动态改变天使用click.then点击,然后我有更改一些查询,然后可能日期后改变非常好,但我的数据是当前日期数据。所以在这里我犯了一个小错误,但是我不知道。如何使用sql server动态获取数据?

这是我的查询=>

SELECT CAST(dateadd(day, T.i, CAST(DATEADD(day,0, GETDATE()) AS Date) AS DateColumn, uf.TotalCount 
    FROM (VALUES (-6), (-5), (-4), (-3), (-2), (-1), (0)) AS T(i) 
    OUTER APPLY 
    (
     SELECT COUNT(UF.InsertDateTime) AS TotalCount 
     FROM Users UF    
     WHERE DATEDIFF(DAY,UF.InsertDateTime, DATEADD(DAY, T.i, GETDATE())) = 0 and UF.IsLogin = 1 
    ) uf 

这是我的表中的数据=>

UserId | IsLogin | InsertDateTime 
-------+---------+--------------------------- 
1   1  2017-08-24 16:12:46.713 
2   1  2017-08-23 16:50:55.789 
3   1  2017-08-22 16:12:46.713 
4   1  2017-08-21 16:12:46.713 
5   1  2017-08-20 16:12:46.713 
6   1  2017-08-19 16:12:46.713 
7   1  2017-08-18 16:12:46.713 

我的当前O/P =>

DateColumn | TotalCount 
2017-08-18  1 
2017-08-19  1 
2017-08-20  1 
2017-08-21  1 
2017-08-22  1 
2017-08-23  1 
2017-08-24  1 

这是我o/p是正确的。但在这里在我的查询我有变化的一天以取代-6然后我想改变前7天。有前7天来了,但在数据库中的数据不是availbale但结果总是让111像..

这是我的查询变化天=>

SELECT CAST(dateadd(day, T.i, CAST(DATEADD(day,-6, GETDATE()) AS Date) AS DateColumn, uf.TotalCount 
    FROM (VALUES (-6), (-5), (-4), (-3), (-2), (-1), (0)) AS T(i) 
    OUTER APPLY 
    (
     SELECT COUNT(UF.InsertDateTime) AS TotalCount 
     FROM Users UF    
     WHERE DATEDIFF(DAY,UF.InsertDateTime, DATEADD(DAY, T.i, GETDATE())) = 0 and UF.IsLogin = 1 
    ) uf 

变化一天后,查询 - 6然后得到这样的结果=>

DateColumn | TotalCount 
2017-08-12  1 
2017-08-13  1 
2017-08-14  1 
2017-08-15  1 
2017-08-16  1 
2017-08-17  1 
2017-08-18  1 

但这里日期12到17在表中的数据不可用。所以我想从明智的日期更正数据。

回答

2

试试这个

SELECT dateadd(day, T.i, CAST(DATEADD(day,-6, GETDATE()) AS Date)), uf.TotalCount 
    FROM (VALUES (-6), (-5), (-4), (-3), (-2), (-1), (0)) AS T(i) 
    OUTER APPLY 
    (
     SELECT COUNT(UF.InsertDateTime) AS TotalCount 
     FROM user1 UF    
     WHERE DATEDIFF(DAY,UF.InsertDateTime, dateadd(day, T.i, CAST(DATEADD(day,-6, GETDATE()) AS Date))) = 0 and UF.IsLogin = 1 
    ) uf 
+0

什么是你想怎么办?如果在用户表中存在日期之前的6天,则只能计数1? – Anagha

+0

是的,这是正确的,谢谢你的帮助和给我重播.. – Edit

+0

你好,我需要一些从你身边提示,所以你能帮我吗?我在我的表中遇到了这个查询的一些问题1百万以上的数据是存储的,所以这个查询需要更多的时间来获取数据,所以如何改进这个查询,请你给我一些想法。 – Edit

相关问题