2012-11-28 54 views
0

嗨,并感谢您提前回复。我是TSQL新手,目前正在实习。 我正在使用VB创建一个网页,我没有问题向用户显示 下面的第一个表中的内容。根据日期的TSQL订单数据

----------Name--------------------Date----------------Points 

1--------Mike---------------------10/01/2012----------4 

2--------Mike---------------------10/05/2012----------2 

3--------Mike---------------------10/03/2012----------1 

4--------Mike---------------------10/17/2012----------4 

5--------Mike---------------------10/24/2012----------4 

6--------Simon---------------------11/05/2012--------1 

7--------Simon---------------------11/11/2012--------3 

8--------Simon---------------------11/20/2012--------4 

9--------Simon---------------------11/22/2012--------2 

10 Simon 11/27/2012 3 

不过,我有一个下拉与每天和每周列表,从第一 表格排序上过一天算一天或一周间隔一周以上数据。

当用户选择以MIN(Date)至 之间的每周间隔显示数据时,输出表中的每个Name应该是这样的。我用

SELECT Name, MIN(Date) AS StartDate, DATEADD(DD, 7, MIN(Date)) AS EndDate, SUM(Points) 

而且我知道我不应该在结束日期设置为一个固定的点一样,因为那样的话未来7天的数据 不会显示。

-----Name-------StartDate-------EndDate---------Points 

1----Mike-------10/01/2012------10/05/2012----------7 

2----Mike-------10/17/2012------10/24/2012----------8 

3----Simon-----11/05/2012-----11/11/2012----------4 

4----Simon-----11/20/2012-----11/27/2012----------9 

任何帮助将不胜感激。我希望我的问题清楚。谢谢!

+2

我是唯一一个认为问题不清楚的人吗?没有所有这些信息,您的问题是什么?向我们展示数据和预期结果,并对这些预期结果做了一个小小的总结。很简单。 – JonH

+0

@JonH我和你在一起,我不太确定被问到的是什么。 – am17torres

+0

我在问题中看不到一个问号。 – JonH

回答

1

我希望我明确你的问题。

对于基于一定范围的日期,你可以使用BETWEEN操作

像这样获取SQL记录:

SELECT Name, MIN(Date) AS StartDate, MAX(Date) AS EndDate, SUM(Points) 
FROM people 
WHERE Date between to_date ('2003/01/01', 'yyyy/mm/dd') 
AND to_date ('2003/12/31', 'yyyy/mm/dd') 
GROUP BY name 
ORDER BY Points; 

我希望这是有帮助的。

+0

您提到“BETWEEN运算符”,但不使用“BETWEEN”。你的意思是“大于或等于”和“小于或等于”运算符?或者你真的打算在开始日期和结束日期之间使用'WHERE order_date? –

+0

我之间使用过。我还提到了进一步阅读的链接。 – hrr

+0

感谢您的回复!我确实在WHERE之间使用了日期,但我不希望在过去7天内每天都有行。我想添加在过去7天内为一个人赢得的所有积分,并将其显示在一行中。然后在第2行的那个人的接下来的7天等等。 – user1860688