sql - 来自 4 个不同表的数据透视表
问题描述
我有四个表,每个表有 2 列,其中一个列名为 common “Workflow” tb1
Workflow | progress
-----------------------
export data | 3
t2
Workflow | closed
----------------------
import data | 4
t3
Workflow | Finished
----------------------
extra data | 2
t4
Workflow | notyet
----------------------
Oracle tags | 7
现在我正在寻找如下结果,
Workflow | Progress | Closed | Finished | notyet |
-------------------------------------------------------------
export data | 3 | 0 | 0 | 0 |
-------------------------------------------------------------
import data | 0 | 4 | 0 | 0 |
-------------------------------------------------------------
extra data | 0 | 0 | 2 | 0 |
-------------------------------------------------------------
Oracle tags | 0 | 0 | 0 | 7 |
解决方案
这样做的基本方法是
select * from
(
select workflow, progress, 0 as closed, 0 as finished, 0 as notyet from tb1
union all
select workflow, 0, closed, 0,0 from tb2
union all
select workflow, 0, 0, finished, 0 from tb3
union all
select workflow, 0, 0, 0, notyet from tb4
) t1
如果您需要分组结果,则:
select
workflow,
sum(progress) as progress,
sum(closed) as closed,
sum(finished) as finished, sum(notyet) as notyet
from
(
select workflow, progress, 0 as closed, 0 as finished, 0 as notyet from tb1
union all
select workflow, 0, closed, 0,0 from tb2
union all
select workflow, 0, 0, finished, 0 from tb3
union all
select workflow, 0, 0, 0, notyet from tb4
) t1
group by workflow;
推荐阅读
- google-analytics - BigQuery,如何复制“转化次数 | (增强)电子商务 | 结账行为漏斗报告
- java - 高负载测试 API
- java - Prometheus/Micrometer:如何计算离散值而不是积分
- javascript - 在 useRef() 对象 React-Native 组件中出现奇怪的行为
- python - 如何使用 Alexa Skill Kit SDK 导入 Python 外部文件?
- swift - Firebase RTDB 读取拒绝响应
- c# - C# 替换字符串中的某个单词,除了任何 url
- javascript - 从 Javascript 调用 Java 函数
- node.js - 在提交表单之前获取文件夹大小
- javascript - 执行命令“adb devices”Visual Studio 代码时出错