1

次のステートメント:

group by datepart(wk, createdon)

選択した行を、それらが該当する週に従ってグループ化します。私のselectステートメントは次のことを示しています。

SELECT 
    datepart(wk, createdon) week,

数字( "12")の代わりに、実際の曜日( "12-10-2012")を表示するにはどうすればよいですか?

4

3 に答える 3

2

ROW_NUMBER1つのオプションは、代わりに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
于 2012-11-07T23:17:45.717 に答える
2

私があなたを正しく理解しているなら、あなたは週ごとにグループ化するだけでなく、完全な日時を返したいと思っています。選択したフィールドを集計列に含める必要があります。したがって、動作するはずです:

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

MSSQL2008R2で動作します

編集:OPは週の開始日を望んでいるように見えるので、SOは答えを持っています。

于 2012-11-07T23:23:00.157 に答える
1

1週間ごとにグループ化してから、その構成要素、つまり日数を表示することはできません。代わりに、日付でグループ化する必要があります。

于 2012-11-07T23:17:15.647 に答える