1

以下声明:

group by datepart(wk, createdon)

根据所选行所在的周对所选行进行分组。我的选择语句显示以下内容:

SELECT 
    datepart(wk, createdon) week,

如何显示一周的实际日期时间(“12-10-2012”),而不是数字(“12”)?

4

3 回答 3

2

一种选择是使用 cteROW_NUMBER代替:

WITH CTE AS 
(
   SELECT 
       RN = ROW_NUMBER() OVER (PARTITION BY datepart(wk, createdon) ORDER BY createdon)
     , DATEADD(ww, DATEDIFF(ww,0,createdon), 0) As Week
     , *
   FROM dbo.Table
)
SELECT * FROM CTE
WHERE RN = 1
于 2012-11-07T23:17:45.717 回答
2

如果我理解正确,您希望按周分组,但也要返回完整的日期时间。您必须在聚合列中包含选定的字段。因此应该工作:

SELECT DATEPART(wk, createdon) week, createdon
FROM TableName
GROUP BY DATEPART(wk, createdon), createdon

适用于 MSSQL2008R2

编辑:由于 OP 似乎想要一周的开始日期,所以有答案

于 2012-11-07T23:23:00.157 回答
1

您不能按周分组,然后显示它的组成部分,即天。您将需要按日期分组。

于 2012-11-07T23:17:15.647 回答