我正在努力实现这个布局。我没有分享这个查询,因为它是有效的,我只是想知道使用什么函数来实现格式“2”。一开始我在做UNION ALL,这就是我如何获得格式'1‘的方式。数据从多个表中获取。我正试图在没有PLSQL的情况下实现这一点。谢谢!
我是怎么得到“1”的
+-----+----+---+-----+
|col_1|col2|...|col_n|
+-----+----+---+-----+
| A |bla |...+ 3 |
+-----+----+---+-----+
| A |bla1|...| 1 |
+-----+----+---+-----+
| B |asd |...+ 2 |
+-----+----+---+-----+
| B |qwe1|...| 6 |
+-----+----+---+-----+
| B |zxc1|...| 1 |
+-----+----+---+-----+
|Sum:A| |...| 4 |
+-----+----+---+-----+
|Sum:B| |...| 9 |
+-----+----+---+-----+我想把它改造成“2”
+-----+----+---+-----+
|col_1|col2|...|col_n|
+-----+----+---+-----+
| A |bla |...+ 3 |
+-----+----+---+-----+
| |bla1|...| 1 |
+-----+----+---+-----+
|Sum:A| |...| 4 |
+-----+----+---+-----+
| B |asd |...+ 2 |
+-----+----+---+-----+
| |qwe1|...| 6 |
+-----+----+---+-----+
| |zxc1|...| 1 |
+-----+----+---+-----+
|Sum:B| |...| 9 |
+-----+----+---+-----+
select
col_1
,col_2
...
col_n
from(
select
kce.name as col_1
,kcp.other_name as col_2
...
,irm.col_n
from tab_1 irm
left join tab_2 kce
on irm.irm_s_id = kce.id
left join tab_3 kcp
on irm.irm_p_id = kcp.id
where irm.customer = :P1_GROUP
order by irm.irm_s_id,irm.irm_p_id
)
union all
select 'Sum '||col_1
,null
...
,sum(col_n)
from(
select
kce.name as col_1
,kcp.other_name as col_2
...
,irm.col_n
from tab_1 irm
left join tab_2 kce
on irm.irm_s_id = kce.id
left join tab_3 kcp
on irm.irm_p_id = kcp.id
where irm.customer = :P1_GROUP
order by irm.irm_s_id,irm.irm_p_id
) group by 'Sum '||col_1发布于 2020-01-21 18:24:30
Break在经典报告中内置了对这种格式的支持,它被称为中断格式。按照以下步骤了解它是如何工作的:
使用以下查询创建一个经典报告:
select job,
ename,
sal
from emp
order by job, sal进入报表选项,并将中断列(在中断格式下)设置为第一列。然后,钻入SAL列并启用Sum设置。
会给你这样的东西:

请参阅Jeff的博客文章,以获得更多信息:https://blog.eberapp.com/ords/f?p=BLOG:READ:::::ARTICLE:6555300346233507&cs=17CDD85DFBD5E33D7BD8F7945B94027CE
发布于 2020-01-21 14:12:52
我认为对您有用的是在查询中创建另一列,即(以该col_1值表示的) col_1财政和。
因此,带有col_1 =A的所有行都将是‘A4’或类似于‘所有A的和为4’之类的内容,不管您想要什么。
然后在一个交互式报告中显示这一点,并在这个新列上设置一个中断。
然后,您将将查询整齐地排序为具有不同col_1值的块以及该值旁边的块之和。
这将需要重写查询,实际上只是对它的一小部分添加。但我们无法控制这一点,因为您没有发布查询。
编辑:
现在添加了查询,我注意到了另一件您可能可以做的事情
SELECT * FROM(
select col_1 as col_0
,col_1
,col_2
...
col_n
from(
select
kce.name as col_1
,kcp.other_name as col_2
...
,irm.col_n
from tab_1 irm
left join tab_2 kce
on irm.irm_s_id = kce.id
left join tab_3 kcp
on irm.irm_p_id = kcp.id
where irm.customer = :P1_GROUP
order by irm.irm_s_id,irm.irm_p_id
)
union all
select col_1 as col_0
,'Sum '||col_1 as col_1
,null
...
,sum(col_n)
from(
select
kce.name as col_1
,kcp.other_name as col_2
...
,irm.col_n
from tab_1 irm
left join tab_2 kce
on irm.irm_s_id = kce.id
left join tab_3 kcp
on irm.irm_p_id = kcp.id
where irm.customer = :P1_GROUP
order by irm.irm_s_id,irm.irm_p_id
) group by 'Sum '||col_1)
ORDER BY col_0, col_1 desc这基本上就是添加另一列,即col_1的值,然后按该列进行排序,这样您就可以得到所有As和A的和,所有B。然后,col_1的顺序是确保A的和在A之前或之后出现,这取决于您选择升序还是降序。
如果你把这第一列隐藏在顶点,这会得到你想要的东西。
https://stackoverflow.com/questions/59842500
复制相似问题