SQL Server 用于在结果查询中显示总和列的SQL语句

6ss1mwsb  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(126)

我有三张表-第一张表描述了项目工程和子工程,下一张表描述了项目工程和子工程:
| 项目编号|工作ID|主要工作ID|工作名称|
| - ------|- ------|- ------|- ------|
| 1个|十个|1个|01号楼|
| 1个|十一|1个|01号楼|
第二个表描述了工作活动:
| 活动ID|项目编号|工作ID|活动名称|
| - ------|- ------|- ------|- ------|
| 1个|1个|十个|平铺|
| 第二章|1个|十个|金属制品|
| 三个|1个|十一|木工厂|
第三个表包括活动成本:
| 活动ID|项目编号|活动_成本|
| - ------|- ------|- ------|
| 1个|1个|五百|
| 1个|1个|七百五十|
| 第二章|1个|三百五十|
| 三个|1个|一百五十|
我创建了这个查询,以便按工作和子工作安排对第一个表进行排序:

SELECT 
    a.WORK_ID, a.MAIN_WORK_ID, a.WORK_NAME
FROM 
    PROJECTSWORKS a  
WHERE 
    a.PROJECT_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语句,但我不知道如何在我的查询中这样做。
查询应返回如下结果:
| 工作ID|合计_成本|
| - ------|- ------|
| 十个|小行星1600|
| 十一|一百五十|

mcdcgff0

mcdcgff01#

您需要连接其他两个表以获取此结果,然后对其他表进行求和(activity_cost)。

SELECT distinct
    a.WORK_ID, a.MAIN_WORK_ID, a.WORK_NAME,sum(c.activity_cost) total_cost
FROM 
    PROJECTSWORKS a  join activities b on a.project_id=b.project_id 
  and a.work_id=b.work_id
  join activities_cost c on c.activity_id=b.activity_id
WHERE 
    a.PROJEcT_ID = 1
  group by a.WORK_ID, a.MAIN_WORK_ID, a.WORK_NAME

以下是example示例

相关问题