如何使用sql server动态获取数据?
问题描述:
我创建了一个查询获取数据过去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在表中的数据不可用。所以我想从明智的日期更正数据。
答
试试这个
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
什么是你想怎么办?如果在用户表中存在日期之前的6天,则只能计数1? – Anagha
是的,这是正确的,谢谢你的帮助和给我重播.. – Edit
你好,我需要一些从你身边提示,所以你能帮我吗?我在我的表中遇到了这个查询的一些问题1百万以上的数据是存储的,所以这个查询需要更多的时间来获取数据,所以如何改进这个查询,请你给我一些想法。 – Edit