Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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查询中获取周格式字符串_Sql_Sql Server - Fatal编程技术网

如何在sql查询中获取周格式字符串

如何在sql查询中获取周格式字符串,sql,sql-server,Sql,Sql Server,我有以下SQL查询(SQL server 2008): 结果是一个包含以下数据的表格: 我不想显示周数而想显示如下格式的周: MM/dd其中MM=月,dd是一周开始的日期 如果我能从一周的第一天开始,然后是中间斜杠,然后是该周的最后一天,最后是这个月,那将是非常棒的:例如:11-17/04(4月11日至17日),等等 这是我想要的最后一张表: 有什么线索吗?如果有人需要它,只要找到一个解决方案,也许不是最好的,但很有效 SELECT sum(data.freq) as freq, data.

我有以下SQL查询(SQL server 2008):

结果是一个包含以下数据的表格:

我不想显示周数而想显示如下格式的周:

MM/dd
其中MM=月,dd是一周开始的日期

如果我能从一周的第一天开始,然后是中间斜杠,然后是该周的最后一天,最后是这个月,那将是非常棒的:例如:11-17/04(4月11日至17日),等等

这是我想要的最后一张表:


有什么线索吗?

如果有人需要它,只要找到一个解决方案,也许不是最好的,但很有效

SELECT sum(data.freq) as freq,
data.week as week, CAST(data.weekstart as varchar) + '-' + CAST(data.weekend as varchar) + '/' + CAST(data.monthend as varchar) as formatweek
FROM (
SELECT 
count(daterequested) as freq,
datepart(wk,daterequested) as week,
DATEPART(dd,DATEADD(dd, -(DATEPART(dw, daterequested)-1), daterequested)) weekstart,
DATEPART(dd,DATEADD(dd, 7-(DATEPART(dw, daterequested)), daterequested)) weekend,
DATEPART(mm,DATEADD(dd, 7-(DATEPART(dw, daterequested)), daterequested)) monthend,
daterequested 
FROM requestma
JOIN contracts mc ON (mc.uid= ma.uid)
JOIN groups og ON og.groupuid = mc.groupuid
JOIN member m ON (m.memberuid = mc.memberuid)
WHERE daterequested BETWEEN 
DATEADD(MONTH,-1,GETDATE())
AND
GETDATE()
AND isdeleted = 0
GROUP BY datepart(wk,daterequested),daterequested
--ORDER BY daterequested ASC
) data
GROUP BY data.week,data.weekstart,data.weekend,data.monthend
由于datapart(wk,adate)返回一年中的一周,因此当您有多年数据时,您的group by可能不会返回预期结果。
SELECT sum(data.freq) as freq,
data.week as week, CAST(data.weekstart as varchar) + '-' + CAST(data.weekend as varchar) + '/' + CAST(data.monthend as varchar) as formatweek
FROM (
SELECT 
count(daterequested) as freq,
datepart(wk,daterequested) as week,
DATEPART(dd,DATEADD(dd, -(DATEPART(dw, daterequested)-1), daterequested)) weekstart,
DATEPART(dd,DATEADD(dd, 7-(DATEPART(dw, daterequested)), daterequested)) weekend,
DATEPART(mm,DATEADD(dd, 7-(DATEPART(dw, daterequested)), daterequested)) monthend,
daterequested 
FROM requestma
JOIN contracts mc ON (mc.uid= ma.uid)
JOIN groups og ON og.groupuid = mc.groupuid
JOIN member m ON (m.memberuid = mc.memberuid)
WHERE daterequested BETWEEN 
DATEADD(MONTH,-1,GETDATE())
AND
GETDATE()
AND isdeleted = 0
GROUP BY datepart(wk,daterequested),daterequested
--ORDER BY daterequested ASC
) data
GROUP BY data.week,data.weekstart,data.weekend,data.monthend