在SQL中按周分组,但显示完整的日期时间?

时间:2012-11-07 23:12:46

标签: sql tsql

以下声明:

group by datepart(wk, createdon)

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

SELECT 
    datepart(wk, createdon) week,

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

3 个答案:

答案 0 :(得分:2)

一种选择是使用带有ROW_NUMBER的cte代替:

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

答案 1 :(得分:2)

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

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

适用于MSSQL2008R2

编辑: 由于OP似乎想要一周的开始日期,因此SO具有answer

答案 2 :(得分:1)

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

相关问题