【发布时间】:2016-02-05 05:59:28
【问题描述】:
我必须显示 2011-2014 年表格中的数据。该表具有另一个名为 time 的表的时间 ID,该表存储实际年份。 我有从这个日期 ID 到日期 ID 中选择数据的声明。
SELECT sum(no_of_placements)
FROM fact_accounts
WHERE
(SELECT account_dim.account_id FROM account_dim WHERE account_dim.account_name = 'DCompany1')
= fact_accounts.fk2
AND (
(SELECT time_dim.time_id FROM time_dim WHERE time_dim.year = 2011)
= fact_accounts.fk1_time_id
OR (SELECT time_dim.time_id FROM time_dim WHERE time_dim.year = 2012)
= fact_accounts.fk1_time_id
OR (SELECT time_dim.time_id FROM time_dim WHERE time_dim.year = 2013)
= fact_accounts.fk1_time_id
OR (SELECT time_dim.time_id FROM time_dim WHERE time_dim.year = 2014)
= fact_accounts.fk1_time_id
)
GROUP BY fact_accounts.no_of_placements
如何在不设置条件以匹配 time_id 的情况下实现相同的目标?如果年份范围较大,这似乎无效。
【问题讨论】:
标签: sql database oracle query-optimization