sql - 如何将多张表与一张表的基本ID组合起来
问题描述
我想组合 5 个多个表,它们具有与包含所有 ID 的基本表相同的参考 ID。“连接”表不包含每个引用的值,但有时它们具有一个引用的多个值。输出应该是 ID 的每个值的总和。
例子:
基本表:
参考 | 基本值 |
---|---|
1 | 一个 |
2 | b |
3 | C |
4 | d |
5 | e |
6 | F |
7 | G |
8 | H |
表格1:
参考 | T1.值 |
---|---|
1 | 一世 |
2 | Ĵ |
2 | X |
3 | ķ |
4 | l |
表 2
参考 | T2.值 |
---|---|
1 | 米 |
5 | n |
7 | ○ |
7 | 是的 |
8 | p |
表3
参考 | T3.价值 |
---|---|
2 | q |
4 | r |
6 | s |
8 | 吨 |
8 | z |
结果应该是输出:
参考 | 基本值 | 总和(T1.值) | 总和(T2.值) | 总和(T3.值) |
---|---|---|---|---|
1 | 一个 | 一世 | 米 | |
2 | b | (j+x) | q | |
3 | C | ķ | ||
4 | d | l | r | |
5 | e | n | ||
6 | F | s | ||
7 | G | (o+y) | ||
8 | H | p | (t+z) |
我尝试了以下代码:
SELECT
T0."STATUS",
T0."DocNum" AS "ProjectNumber",
T0."NAME", T0."CARDNAME" AS "Client",
T0."FINISHED" AS "Project Finished",
T1."PoPhAmt" AS "Project Value",
T1."PhBudget" AS "Budget",
(T1."PoPhAmt"-T1."PhBudget") AS "Planned Gross Profit",
T1."TotalAP" AS "Ordered",
SUM(T2."PaidSys") AS "Paid Downpayments(Client)",
COUNT(T2."PaidSys"),
SUM(T3."PaidSys") AS "Paid Invoices(Client)",
COUNT(T3."PaidSys"),
SUM(T4."PaidSys") AS "Creditnotes(Client)",
COUNT(T4."PaidSys")
FROM
(OPMG T0 INNER JOIN PMG8 T1 ON T0."AbsEntry" = T1."AbsEntry")
LEFT JOIN ODPI T2 ON T0."FIPROJECT" = T2."Project"
LEFT JOIN OINV T3 ON T0."FIPROJECT" = T3."Project"
LEFT JOIN ORIN T4 ON T0."FIPROJECT" = T4."Project"
WHERE
T0."FINISHED" < '100' AND T0."STATUS" <> 'N' AND T0."STATUS" <> 'P'
GROUP BY
T0."STATUS",
T0."DocNum",
T0."NAME",
T0."CARDNAME",
T0."FINISHED" ,
T1."PoPhAmt",
T1."PhBudget",
T1."TotalAP"
ORDER BY
T0."DocNum"
解决方案
使用以下查询STRING_AGG函数和 group byBasic_Table.Reference
SELECT
T.Reference,
MAX(T.Basic_Value) AS Basic_Value,
SUM(T1.T1_Value) AS T1_Value,
SUM(T2.T2_Value) AS T2_Value,
SUM(T3.T3_Value) AS T3_Value
FROM BASIC_TABLE T
LEFT JOIN TABLE_1 T1 ON T.Reference=T1.Reference
LEFT JOIN TABLE_2 T2 ON T.Reference=T2.Reference
LEFT JOIN TABLE_3 T3 ON T.Reference=T3.Reference
GROUP BY T.Reference
推荐阅读
- java - 带有 Sqlite3 的 Spring Boot 无法自动装配 JPArepository 接口
- javascript - 如何将连续的字符串输入与javascript中的段落匹配,同时显示错误?
- jquery - Jquery - 从 div 文本动态地将值插入 h5
- static - 我可以避免在没有`static mut`的情况下重新编译我的平台层吗?
- javascript - React Native 如何监听生命周期中的上下文变化
- database - Oracle 12g - 如何恢复被覆盖的表空间文件?
- swift - 有没有办法让一个函数自己调用而不重新指定它的所有参数?
- javascript - 这第一个功能是如何工作的?
- python - 找到具有 11,390,625 个变量组合的函数的最小值
- wso2 - WSO2 EI - 销售队伍连接器未连接到部分实例