-2

我有一个表,每个 Key TableA 都有很多成本列

SK1 SK2 Col1 Col2 Col3..... Col50 Flg(Y/N)


1    2    10    20   30 ...... 500  Y
1    2    10    20   30 ...... 500  N
2    2    10    20   30 ...... 500  N

我需要汇总(总和)所有值,然后检查是否有任何带有 Y 的值,然后将它们添加到新表 B。此处应返回表 (sk1,sk2) 的记录组合 (1,2)。

我写的查询是选择所有 cols 的 lisr 并添加为 group by。我们有很多数据,所以这个查询运行时间太长。任何机会重新审视这一点,并这样做,它可以变得更快。

从表 A 中选择 Sk1, Sk2, nvl(sum(col3),0), nvl(sum(col4))0, ..... nvl(sum(col50)) 按 Sk1, Sk2 分组

我将其用作大型查询的一部分,在此基础上执行许多其他计算。

4

3 回答 3

0

现在我已经创建了一个临时表并将所有数据加载到其中。

于 2016-05-27T05:38:10.703 回答
0

确定任何一组记录是否包含“Y”就像...

select   ...
from     ...
group by ...
having   max(flg) = 'Y'
于 2016-05-24T09:00:19.477 回答
-1

如果您将其用作大型查询的一部分,您是否尝试过 WITH 选项?

它可能是这样的

WITH SUM_DATA AS (select col1, col2, nvl(sum(col3),0), nvl(sum(col4))0, ..... nvl(sum(col50)) from table A group by col1, col2)

SELECT xyz 
FROM abc, sum_data
WHERE abc.join_col = sum_data.join_col

更多帮助在这里

于 2016-05-23T18:18:36.930 回答