ここで小さな開発上の課題があります。CURR_RATES
SQL Serverに次のテーブルがあります。
SELECT *
FROM (VALUES
(1001300, 'USD', 13, '8/1/2013', 1.31),
(1001301, 'USD', 13, '8/2/2013', 1.32),
(1001302, 'USD', 13, '8/5/2013', 1.33),
(1001303, 'USD', 13, '8/6/2013', 1.34),
(1001304, 'USD', 13, '8/7/2013', 1.35),
(1001305, 'USD', 13, '8/8/2014', 1.31),
(1001306, 'USD', 13, '8/9/2013', 1.32),
(1001307, 'USD', 13, '8/12/2013', 1.33),
(1001308, 'USD', 13, '8/13/2013', 1.34),
(1001309, 'USD', 13, '8/14/2013', 1.35),
(1001310, 'USD', 13, '8/15/2013', 1.36),
(1001311, 'USD', 13, '8/16/2013', 1.37),
(1001312, 'USD', 13, '8/19/2013', 1.38),
(1001313, 'USD', 13, '8/20/2013', 1.38),
(1001314, 'USD', 13, '8/21/2013', 1.37),
(1001315, 'USD', 13, '8/22/2013', 1.36),
(1001316, 'USD', 13, '8/23/2013', 1.35),
(1001317, 'USD', 13, '8/26/2013', 1.34),
(1001318, 'USD', 13, '8/27/2013', 1.33),
(1001319, 'USD', 13, '8/28/2013', 1.31),
(1001320, 'USD', 13, '8/29/2013', 1.32),
(1001321, 'USD', 13, '8/30/2013', 1.33)) as t(DATA_ID, CURR, CODE, [DATE], [RATE])
そして、たとえば 2013-08-01 から 2013-08-31 までの範囲を使用して、どの日が土曜日と日曜日 (週末) であるかを見つける必要があります。これは、datename(dw, CURR_RATES.DATE) 関数を使用して簡単に行うことができます。
datename(dw, CURR_RATES.DATE) as weekday from CURR_RATES
DATA_ID CURR CODE DATE RATE Weekday
----------- ---- ----------- --------- ----- -----------
1001300 USD 13 8/1/2013 1.31 Thursday
1001301 USD 13 8/2/2013 1.32 Friday
1001302 USD 13 8/5/2013 1.33 Monday
1001303 USD 13 8/6/2013 1.34 Tuesday
1001304 USD 13 8/7/2013 1.35 Wednesday
1001305 USD 13 8/8/2014 1.31 Friday
1001306 USD 13 8/9/2013 1.32 Friday
1001307 USD 13 8/12/2013 1.33 Monday
1001308 USD 13 8/13/2013 1.34 Tuesday
1001309 USD 13 8/14/2013 1.35 Wednesday
1001310 USD 13 8/15/2013 1.36 Thursday
1001311 USD 13 8/16/2013 1.37 Friday
1001312 USD 13 8/19/2013 1.38 Monday
1001313 USD 13 8/20/2013 1.38 Tuesday
1001314 USD 13 8/21/2013 1.37 Wednesday
1001315 USD 13 8/22/2013 1.36 Thursday
1001316 USD 13 8/23/2013 1.35 Friday
1001317 USD 13 8/26/2013 1.34 Monday
1001318 USD 13 8/27/2013 1.33 Tuesday
1001319 USD 13 8/28/2013 1.31 Wednesday
1001320 USD 13 8/29/2013 1.32 Thursday
1001321 USD 13 8/30/2013 1.33 Friday
私がする必要があるのは、欠落している土曜日と日曜日を見つけて、前の金曜日に等しい列 RATE の値を設定する行を挿入するストアド プロシージャを作成することです。テーブルには他の月のデータを含めることができるため、範囲を指定できる必要があります。また、DATA_ID 列には、新しく追加された行の値を含める必要があります。最初に挿入された行の場合、DATA_ID 列の値は最後の行の値 DATA_ID +1 である必要があります - 2 番目に挿入された行は、新しく挿入された行の DATA_ID +1 である必要があります。テーブルの最後の行のDATA_IDも把握します。
これが十分に明確であることを願っています-これを実装する方法に関するフィードバックやアイデアをいただければ幸いです。
事前にどうもありがとうございました。
R00ty