【发布时间】:2014-09-10 12:31:16
【问题描述】:
我已经编写了 2 个查询,我需要考虑将它们组合成我认为必须是游标的内容。第一个查询看起来像这样-
DECLARE @Date DATETIME
SET @Date = '12-July-2014'
SELECT Date AS SaturdayDate
, DayOfWeek
FROM (
SELECT DATE
, DATENAME(DW,DATE) as DayOfWeek
, ROW_NUMBER() OVER (ORDER BY Date) AS rownum
FROM tblCalender
WHERE DATENAME(DW,DATE) = 'Saturday'
AND Date > @Date
) AS t
WHERE t.rownum % 4 = 0
AND DATEPART(YEAR, Date) = DATEPART(Year, GETDATE())
在 7 月 12 日之后的剩余时间里,每第 4 个星期六返回 -
SaturdayDate |DayOfWeek
2014-08-09 00:00:00.000 |Saturday
2014-09-06 00:00:00.000 |Saturday
2014-10-04 00:00:00.000 |Saturday
2014-11-01 00:00:00.000 |Saturday
2014-11-29 00:00:00.000 |Saturday
2014-12-27 00:00:00.000 |Saturday
这非常适合我的需要,然后我需要使用上述结果作为@SaturdayDate 参数运行更新查询(需要它循环并更新每条记录)
UPDATE dbo.tblStaffRota
SET StartTime = '11:00:00'
WHERE (EmployeeID IN ('JJJ','HSW', 'GPH', 'DVD'))
AND (StartTime = '10:30:00')
AND (Date BETWEEN @SaturdayDate - 6 AND @SaturdayDate)
因此,更新查询将循环遍历第一个查询的结果,用新的开始时间更新每个日期,不知道如何进行此操作,我找到的所有答案都没有帮助。希望这足够清楚。谢谢
*附加说明 - 更新需要查看前一周到每个星期六出现的天数,并更改任何开始时间。
正在使用的表格示例。
基于此,如果星期六在列表中,更新将更改 18 日和 19 日的开始时间。
【问题讨论】:
标签: sql-server-2008 sql-update