我希望在某些条件下获得列的总和,即取决于列是具有子任务的父级还是没有子任务的父级。如果一个任务是子任务的父级,我只想要子任务的“完整”列的总和。如果一个任务只是一个父级,我只想要父级的完整列的总和。- 但仅当任务(父或子)都与同一用户相关时。
例如在以下示例表中:
UserID | Parent_TaskID | TaskID | Complete
------ | ------------- | ------ | --------
435 | 149329 | 161280 | 1
435 | 149330 | 210717 | 2
435 | 149330 | 228100 | 3
435 | 156991 | 149330 | 1
169 | 458764 | 546540 | 2
169 | 456842 | 546541 | 2
169 | 456842 | 458764 | 0
TaskID 149330 是具有子 210717 和 228100 的父级,因此 149330 的该列的计数为 5,即忽略父级的完整列。161280 是父级,因此只会返回 0。546540 是 458764 的子任务,因此 458764 的总和为 2。
所以我认为我的结果应该是这样的:
TaskID | Sum_complete
------- | ------------
161280 | 1
149330 | 5
546541 | 2
458764 | 2
任何想法如何做到这一点?
我在 SqlFiddle http://sqlfiddle.com/#!2/8295f创建了一个表
谢谢,
我可以通过以下方式获得父母:
select t.taskID, t.Parent_taskID, t.userID, t.complete
from task t
where t.Parent_taskID not in (
select tp.taskID
from task tp
where tp.userID = t.userID
)