sql - 与 group by (Sum) 的多个联接
问题描述
当我使用多个 JOIN 时,我希望得到连接表中某些列的总和。
SELECT
A.*,
SUM(C.purchase_price) AS purcchase_total,
SUM(D.sales_price) AS sales_total,
B.user_name
FROM
PROJECT AS A
LEFT JOIN
USER AS B ON A.user_idx = B.user_idx
LEFT JOIN
PURCHASE AS C ON A.project_idx = C.project_idx
LEFT JOIN
SALES AS D ON A.project_idx = D.project_idx
GROUP BY
????
解决方案
SELECT A.project_idx,
a.project_name,
A.project_category,
purcchase_total,
sales_total,
B.user_name
FROM PROJECT AS A
LEFT JOIN USER AS B ON A.user_idx = B.user_idx
LEFT JOIN (select project_idx, sum(purchase_price) as purchase_total
from PURCHASE group by project_idx ) AS C ON A.project_idx = C.project_idx
LEFT JOIN (select project_idx, sum(sale_price) as sale_total
from SALES group by project_idx) AS D ON A.project_idx = D.project_idx
这在 MS-SQL Server 上正常工作。感谢大力水手
推荐阅读
- python - 如何使用python boto3将文件上传到aws S3存储桶中的文件夹
- jquery - jQuery Attr 不输出
- matlab - Matlab:如何将单元格数组转换为字符串数组?
- docusignapi - Node js , Docusign 下载信封的签名文件
- ios - 手机加速相对于 iOS 中帧的初始参考
- web-scraping - 如何访问网站中的视频文件?(例如 youtube mp3 转换器)
- php - 如何使用竞争 (docker) laravel 应用程序
- python - 为什么 ImportContactsRequest (telethon 1.3) 方法不添加联系人也不产生错误?
- c++ - CRTP 中的复制赋值运算符 - gcc vs clang 和 msvc
- generics - 如果我有消息类型列表,如何在 MassTransit 中注册通用消费者适配器