2015-04-28 31 views
-1

我有一个表,看起来像这样:如何为以下方案构建SQL查询?

Name Post  Like Share Comment Date 
-------------------------------------------- 
Sita test data 1 5 2 4 28/4/2015 
Munni test data 2 5 2 5 27/4/2015 
Shila test data 3 1 3 1 22/4/2015 
Ram  Test data 4 5 0 5 1/4/2015 
Sam  Test data 5 4 0 2 2/4/2015 
Jadu Test data 6 1 5 2 30/3/2015 
Madhu Test data 7 5 0 4 10/4/2015 

现在我想我的结果集是这样的:

Type   Name  Post  Like Share Comment Date 
------------------------------------------------------------------------- 
Today   Sita test data 1 5 2 4  28/4/2015 
Last 7 Days  Sita test data 1 5 2 4  28/4/2015 
Last 7 Days  Munni test data 2 5 2 5  27/4/2015 
Last 7 Days  Shila test data 3 1 3 1  22/4/2015 
Last 30 Days Sita test data 1 5 2 4  28/4/2015 
Last 30 Days Munni test data 2 5 2 5  27/4/2015 
Last 30 Days Shila test data 3 1 3 1  22/4/2015 
Last 30 Days Ram  Test data 4 5 0 5  1/4/2015 
Last 30 Days Sam  Test data 5 4 0 2  2/4/2015 
Last 30 Days Jadu Test data 6 1 5 2  30/3/2015 
Last 30 Days Madhu Test data 7 5 0 4  10/4/2015 

今天只能有今天的文章。过去7天内必须有今天的帖子+过去7天的帖子。过去30天的专栏必须包含过去30天的所有信息。

+1

看看使用'union all'和'where where子句... – sgeddes

+0

可以请你给整个查询吗?请给我 – xyz

回答

0

有几个工会与不同的案件陈述来获得日期范围将工作。

+0

如果你给我整个查询,我会非常感谢你。请... – xyz

+0

我使用这下面的查询追踪日期.... 选择 tblWatchList.UserName, tblPost.Post, tblPost.Time FROM tblPost INNER JOIN tblProfile ON(tblProfile.ID = tblPost .UID) INNER JOIN tblWatchList ON(tblWatchList.ID = tblProfile.UID) WHERE dbo.tblPost.Time BETWEEN(SELECT CONVERT(VARCHAR(10),DATEADD(DD,DATEDIFF(DD,0,GETDATE()), - 44),120)) AND GETDATE() ORDER BY FBDB.dbo.tblPost.Time ASC – xyz

0

使用union alldateadd

select 'Today' as Type, Name, Post, [Like], Share, Comment, [Date] 
from yourtable 
where [Date] = getdate() 
union all 
select 'Last 7 Days' as Type, Name, Post, [Like], Share, Comment, [Date] 
from yourtable 
where [Date] >= DateAdd(day,-7,getdate()) 
union all 
select 'Last 30 Days' as Type, Name, Post, [Like], Share, Comment, [Date] 
from yourtable 
where [Date] >= DateAdd(day,-30,getdate()) 

BTW,对列名可怕的选择(不使用保留字)。

+0

....它只是一个示例表结构。无论如何非常感谢答案 – xyz