我一直致力于查询数据库中数据的问题:
SELECT t1.*
FROM [DailyTaskHours] t1
INNER JOIN (
SELECT ActivityDate
,taskId
,EnteredBy
FROM [DailyTaskHours]
WHERE hours != 0
GROUP BY EnteredBy
,taskId
,ActivityDate
HAVING COUNT(*) > 1
) t2 ON (
t1.ActivityDate = t2.ActivityDate
AND t1.taskId = t2.taskId
AND t1.EnteredBy = t2.EnteredBy
AND t1.Hours != 0
)
ORDER BY ActivityDate
这样做是为同一天在同一任务中找到同一个人预订的重复小时数:
现在我发现了我想用UPDATE纠正它们的问题。我希望先前创建的重复活动将值从Hours移动到doubleBookedHours,将Month移动到零。其次,我希望将更新的行的DoubleBookedFLag列更新为1。
我怎样才能做到这一点?
答案 0 :(得分:0)
您可以编写SQL Server代理作业来调用T-SQL或SSIS包来执行逻辑。
我总是喜欢在设计算法时使用伪代码。
例如。
查找重复的条目并将它们保存到临时表中,无论是在临时区域还是临时区域中。某些位置可由多个进程(spid)访问。
查找最近的记录(1+)。移动时间加倍预订列?
查找最近的记录(1+)。零小时栏。
更新最近的记录,将双书标记列设置为1。
您没有具体说明将价值从小时数转移到预订时间的两倍。这些是吗?
简而言之,SQL Server代理作业和几个正确的T-SQL步骤可以解决您的问题。