我想加入一个带有大结果集(+ 6M 行)的表。
我有下表
时期 | 区 | 标签 | 姓名 | 程序 | 成本 |
---|---|---|---|---|---|
2020-10-01 | 欧洲、中东和非洲 | 一个 | 用户 2 | 节目二 | 98 |
2020-11-01 | 亚太地区 | 一个 | 用户 2 | 节目二 | 103 |
2020-12-01 | 不适用 | 一个 | 用户 2 | 节目二 | 118 |
2020-10-01 | 不适用 | X | 用户 3 | 方案 3 | 334 |
2020-11-01 | 欧洲、中东和非洲 | X | 用户 3 | 方案 3 | 362 |
2020-12-01 | 亚太地区 | X | 用户 3 | 方案 3 | 380 |
我想要一个具有这种输出的高效查询(我不介意没有值可以是 0 或 null):
时期 | 区 | 标签 | 姓名 | 程序 | 成本 | 成本欧洲、中东和非洲 | 亚太地区成本 | 成本不适用 |
---|---|---|---|---|---|---|---|---|
2020-10-01 | 欧洲、中东和非洲 | 一个 | 用户 2 | 节目二 | 98 | 98 | 0 | 0 |
2020-11-01 | 亚太地区 | 一个 | 用户 2 | 节目二 | 103 | 0 | 103 | 0 |
2020-12-01 | 不适用 | 一个 | 用户 2 | 节目二 | 118 | 0 | 0 | 118 |
2020-10-01 | 不适用 | X | 用户 3 | 方案 3 | 334 | 0 | 0 | 334 |
2020-11-01 | 欧洲、中东和非洲 | X | 用户 3 | 方案 3 | 362 | 362 | 0 | 0 |
2020-12-01 | 亚太地区 | X | 用户 3 | 方案 3 | 380 | 0 | 380 | 0 |
如果我执行以下查询,则需要很长时间:
WITH TOTAL AS (
SELECT Period,Zone,TAG,NAME,PROGRAM,COST
FROM "DB"."SCHEMA"."Table"
)
SELECT T.*,E."COST" AS "COST EMEA",A."COST" AS "COST APAC",N."COST" AS "COST NA"
FROM TOTAL T , TOTAL E, TOTAL A, TOTAL N
WHERE T."Period" = E."Period"
AND T."Period" = A."Period"
AND T."Period" = N."Period"
我该如何改进这个查询?有一种有效的方法来执行它吗?