次のステートメント:
group by datepart(wk, createdon)
選択した行を、それらが該当する週に従ってグループ化します。私のselectステートメントは次のことを示しています。
SELECT
datepart(wk, createdon) week,
数字( "12")の代わりに、実際の曜日( "12-10-2012")を表示するにはどうすればよいですか?
ROW_NUMBER
1つのオプションは、代わりに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
私があなたを正しく理解しているなら、あなたは週ごとにグループ化するだけでなく、完全な日時を返したいと思っています。選択したフィールドを集計列に含める必要があります。したがって、動作するはずです:
SELECT DATEPART(wk, createdon) week, createdon
FROM TableName
GROUP BY DATEPART(wk, createdon), createdon
MSSQL2008R2で動作します
編集:OPは週の開始日を望んでいるように見えるので、SOは答えを持っています。
1週間ごとにグループ化してから、その構成要素、つまり日数を表示することはできません。代わりに、日付でグループ化する必要があります。