2016-04-28 12 views
1

私が探しているものを見つけずにアーカイブを検索しました。私はいくつかのガイダンスに満足しています。iso_weekをSQLのカレンダーの日付に変換する

プロバイダ(STAFFID)と作業週の集計番号を報告するデータセットがあります。後者は週の月曜日の日付で定義されます。私はdatepart(iso_week, appointment_date) as week_of_yrと一緒に遊んだが、そこには道がある。私は正しい番号を得るために週にグループ化することができる。しかし、iso_week整数(と年)を指定して、週の月曜日の日付を表示する簡単な方法があるかどうかはわかりません。

私はISO8601 Convert Week Date to Calendar Dateが役に立ちましたが、多くの値のプロセスを一度に自動化できるかどうかはわかりません。

ここに私が持っているコードのおしゃべりがあります。理想的には、希望の日付を表示する別の式をselectステートメントに追加することができます。

 select STAFFID 
    , count(*) as appointment_ct 
    , datepart(iso_week, appointment_date) as iso_wk --this returns the week # of the year as an int 
    from [dbo].[view_APPT_DATA] 
    where program_code in ('99999') 
    and appointment_date >= '1/1/2016' and appointment_date <='3/31/2016' 
    group by iso_wk, STAFFID 

答えて

0

私はfirst Monday of that yearを検索し、その日に

select STAFFID 
, count(*) as appointment_ct 
, datepart(iso_week, appointment_date) as iso_wk --this returns the week # of the year as an int 
, dateadd(week, datepart(week, DATEADD(DAY, (@@DATEFIRST - DATEPART(WEEKDAY, dateadd(year, datepart(year, appointment_date) - 1900, 0)) + (8 - @@DATEFIRST) * 2) % 7, dateadd(year, datepart(year, appointment_date) - 1900, 0))) as monday_wk 
from [dbo].[view_APPT_DATA] 
where program_code in ('99999') 
and appointment_date >= '1/1/2016' and appointment_date <='3/31/2016' 
group by iso_wk, STAFFID, monday_wk 
+0

ありがとう@chaの週の数を追加するためにDATEADDを使用します。考え方はうまくいきますが、あなたのSQLはdateadd fxnの正しい引数数に関してエラーを出します。私は、 "dateadd(wk、(iso_wk-1)、 '1/4/2016')という式を変数を宣言することなく動作するselect文に追加することになりましたが、もちろん2016年に依存します。 – spearmint

関連する問題