【发布时间】:2011-04-14 06:57:28
【问题描述】:
我有一个表,其中包含具有任意级别子任务的任务的典型分层数据。对于根级任务,ParentID 为 NULL。:
CREATE TABLE [dbo].[tblTask](
[TaskID] [int] IDENTITY(1,1) NOT NULL,
[TaskDescription] [nvarchar](255) NOT NULL,
[TaskStatusID] [int] NOT NULL,
[ParentID] [int] NULL
)
在每个月初,我需要用新的 TaskID 为每个未完成的任务复制层次结构(TaskStatusID == 完成),然后关闭所有原始任务。为了避免悲伤,我的第一个想法是在 c# 中解决这个问题,我比 SQL 更熟练,但我想首先尝试了解是否有直接在数据库中解决这个问题的好方法。
更新:@Abe 我不确定您特别需要什么样本数据,也没有所需的输出。我需要复制表中的结构,但需要使用新的 TaskID。这是针对 SQL Server 的。
@thursdaysgeek 假设如果父任务已完成,则所有子任务也已完成。并且规则是,如果根任务的子任务都完成了,那么我可以设置根任务完成。否则,如果父任务未完成但子任务完成,那么我只需要复制父任务而不是子任务。希望对您有所帮助。
【问题讨论】:
-
你能给我们你的样本数据和想要的输出吗?另外,这个 DBMS 是干什么用的?
-
是否有可能有一个未完成的子任务和一个已完成的父任务?如果是这样,那么两者都需要复制吗?如果您有一个未完成的父任务和一个未完成的子任务,那么只需要复制父任务吗?
-
一个好的方法是用 C#(或伪 C#)写出来,然后在这里发布你的结果。然后寻求帮助将该算法转换为 SQL。