以下声明:
group by datepart(wk, createdon)
根据所选行所在的周对所选行进行分组。我的选择语句显示以下内容:
SELECT
datepart(wk, createdon) week,
如何显示一周的实际日期时间(“12-10-2012”),而不是数字(“12”)?
一种选择是使用 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
如果我理解正确,您希望按周分组,但也要返回完整的日期时间。您必须在聚合列中包含选定的字段。因此应该工作:
SELECT DATEPART(wk, createdon) week, createdon
FROM TableName
GROUP BY DATEPART(wk, createdon), createdon
适用于 MSSQL2008R2
编辑:由于 OP 似乎想要一周的开始日期,所以有答案。
您不能按周分组,然后显示它的组成部分,即天。您将需要按日期分组。