我在这里有一个小的开发挑战。我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 的值 - 第二个插入的行应该是新插入的行 +1 的 DATA_ID,依此类推......所以 SP 需要还要找出表中最后一行的 DATA_ID。
希望这足够清楚 - 将感谢有关如何实现此功能的任何反馈或想法。
非常感谢您提前。
R00ty