【发布时间】:2023-01-23 21:16:11
【问题描述】:
我有三个表 - 第一个表描述了项目工作和下一个子工作:
| PROJET_ID | WORK_ID | MAIN_WORK_ID | WORK_NAME |
|---|---|---|---|
| 1 | 10 | 1 | Building-01 |
第二个表描述了工作活动:
| ACTIVITY_ID | PROJET_ID | WORK_ID | ACTIVITY_NAME |
|---|---|---|---|
| 1 | 1 | 10 | Tiling |
| 2 | 1 | 10 | Metal Works |
第三个表包括活动成本:
| ACTIVITY_ID | PROJET_ID | ACTIVITY_COST |
|---|---|---|
| 1 | 1 | 500 |
| 1 | 1 | 750 |
| 2 | 1 | 350 |
我创建了这个查询来按工作和子工作安排对第一个表进行排序:
SELECT
a.WORK_ID, a.MAIN_WORK_ID, a.WORK_NAME
FROM
PROJECTSWORKS a
WHERE
a.PROJET_ID = 1
ORDER BY
CASE
WHEN a.WORK_ID = a.MAIN_WORK_ID THEN a.MAIN_WORK_ID
WHEN a.WORK_ID < a.MAIN_WORK_ID THEN a.WORK_ID
WHEN a.WORK_ID > a.MAIN_WORK_ID THEN a.MAIN_WORK_ID
END
现在我需要结果表(来自我的查询)有包含每个子工作的总成本的附加列,我知道我应该使用子查询或 JOIN 语句,但我不知道如何在我的内部进行询问。
查询应返回如下结果:
| WORK_ID | Total_Cost |
|---|---|
| 10 | 1600 |
【问题讨论】:
标签: sql sql-server