1

ここで小さな開発上の課題があります。CURR_RATESSQL 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

4

1 に答える 1