Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 每周都有结果_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 每周都有结果

Sql server 每周都有结果,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我需要您按日期订购一个查询,然后如果可以简化它:-) 此查询将返回从当前日期开始每周的条目数 以下是查询: SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -7), 103) as periode_join, COUNT(u.usr_ID) as cptu FROM [USR_USER] u INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID WHE

我需要您按日期订购一个查询,然后如果可以简化它:-)

此查询将返回从当前日期开始每周的条目数

以下是查询:

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -7), 103) as periode_join, COUNT(u.usr_ID) as cptu 
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -7) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

UNION

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -14), 103) as periode_join, COUNT(u.usr_ID) as cptu 
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -14) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -7)   

UNION

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -21), 103) as periode_join, COUNT(u.usr_ID) as cptu 
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -21) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -14)

UNION

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -28), 103) as periode_join, COUNT(u.usr_ID) as cptu 
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -28) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -21)   

 UNION

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -35), 103) as periode_join, COUNT(u.usr_ID) as cptu  
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -35) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -28)   

UNION

SELECT CONVERT(VarChar(50), DATEADD(day, DATEDIFF(day, 0, GETDATE()), -42), 103) as periode_join, COUNT(u.usr_ID) as cptu 
FROM [USR_USER] u 
INNER JOIN [USI_USER_SITE] s ON u.USR_ID = s.USR_ID
WHERE u.[USR_JOINED_DT] >=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -42) and u.[USR_JOINED_DT] <=  DATEADD(day, DATEDIFF(day, 0, GETDATE()), -35)
ORDER BY periode_join desc

非常感谢:-D

如果您有SQL Server 2005及以上版本,您可以尝试以下内容:

;with CTE_Data as
(
  select
        u.usr_id,
        cast(dateadd(dd, -(datediff(dd, u.usr_joined_dt, getdate()) / 7 + 1) * 7, getdate()) as date) as periode_join
    from usr_user as u 
        inner join usi_user_site as s on u.usr_id = s.usr_id
)
select periode_join, count(usr_id) as cptu
from CTE_Data
group by periode_join
order by periode_join asc

要按周分割数据,我们必须计算getdate()和表中date-Diff(dd,u.usr\u joined\u dt,getdate())中日期之间的天数差,然后我们必须得到整周数-
/7
,然后我们必须减去整周数+1


例如,如果date=
'2013/06/30'
那么天数=9,整周数=1,我们必须减去1+1周,这样我们就得到了
'2013/06/25
,等等,你在使用哪个版本的SQL Server?是的,它可以工作,但你能解释一下这一行吗:
cast(dateadd(dd),(datediff)(dd,u.usr_加入_dt,getdate())/7+1)*7,getdate())作为日期)作为周期加入
;with CTE_Data as
(
  select
        u.usr_id,
        cast(dateadd(dd, -(datediff(dd, u.usr_joined_dt, getdate()) / 7 + 1) * 7, getdate()) as date) as periode_join
    from usr_user as u 
        inner join usi_user_site as s on u.usr_id = s.usr_id
)
select periode_join, count(usr_id) as cptu
from CTE_Data
group by periode_join
order by periode_join asc