Sql 分组依据条款-仅限第一个“;集团行“;充满价值
嘿,伙计们,我需要你们的帮助 实际上我有一个select语句,它包含一个group by col1,col2,col3 但我需要的是,只有“group”的第一行应该显示值。以下行应为null或空白。应该是这样的:Sql 分组依据条款-仅限第一个“;集团行“;充满价值,sql,oracle,group-by,Sql,Oracle,Group By,嘿,伙计们,我需要你们的帮助 实际上我有一个select语句,它包含一个group by col1,col2,col3 但我需要的是,只有“group”的第一行应该显示值。以下行应为null或空白。应该是这样的: SQL> break on deptno on job SQL> select deptno, job, ename, sal 2 from emp 3 order by deptno, job, ename; DEPTNO JOB EN
SQL> break on deptno on job
SQL> select deptno, job, ename, sal
2 from emp
3 order by deptno, job, ename;
DEPTNO JOB ENAME SAL
---------- --------- ---------- ----------
10 CLERK MILLER 1300
MANAGER CLARK 2450
PRESIDENT KING 5000
20 ANALYST FORD 3000
SCOTT 3000
CLERK ADAMS 1100
SMITH 800
MANAGER JONES 2975
30 CLERK JAMES 950
MANAGER BLAKE 2850
SALESMAN ALLEN 1600
MARTIN 1250
TURNER 1500
WARD 1250
14 rows selected.
这可能吗!?如果是,怎么做?:-)
谢谢你的帮助!!
Anja通常被称为休息。SQL*Plus有,Oracle Reports有,Application Express也有。。。因此,根据您将在何处使用它,您可以通过选择要在哪些列上断开报告,以声明的方式进行操作
这是一个SQL*Plus示例
首先,斯科特的EMP表“原样”:
如果应用中断,则如下所示:
SQL> break on deptno on job
SQL> select deptno, job, ename, sal
2 from emp
3 order by deptno, job, ename;
DEPTNO JOB ENAME SAL
---------- --------- ---------- ----------
10 CLERK MILLER 1300
MANAGER CLARK 2450
PRESIDENT KING 5000
20 ANALYST FORD 3000
SCOTT 3000
CLERK ADAMS 1100
SMITH 800
MANAGER JONES 2975
30 CLERK JAMES 950
MANAGER BLAKE 2850
SALESMAN ALLEN 1600
MARTIN 1250
TURNER 1500
WARD 1250
14 rows selected.
非常符合您的要求。您可以使用first\u value
函数,并将设置为以下3个和无限制的窗口子句:
请编辑问题并发布您尝试过的sql。请看一下oracle分析函数。另外,请以文本形式提供示例数据,最好是SQL语句。人们无法从图像中剪切“n”粘贴,这意味着他们需要手工键入所有内容,这既繁琐又耗时。你在互联网上向一群陌生人求助:如果你让人们编写和测试代码变得容易,你就更有可能更早得到有用的回复。这种格式是UI配置问题,而不是SQL问题。
with t(col1,col2,col3,col4) as
(
select 'A', 'A1', .3, 'Pramisse 1' from dual union all
select 'A', 'A1', .3, 'Pramisse 2' from dual union all
select 'A', 'A1', .3, 'Pramisse 3' from dual union all
select 'A', 'A1', .3, 'Pramisse 4' from dual union all
select 'A', 'A2', 1, 'Pramisse 1' from dual union all
select 'A', 'A2', 1, 'Pramisse 2' from dual union all
select 'A', 'A2', 1, 'Pramisse 3' from dual union all
select 'A', 'A2', 1, 'Pramisse 4' from dual union all
select 'A', 'A3', 1, 'Pramisse 1' from dual union all
select 'A', 'A3', 1, 'Pramisse 2' from dual union all
select 'A', 'A3', 1, 'Pramisse 3' from dual union all
select 'A', 'A3', 1, 'Pramisse 4' from dual
)
select first_value(col1) over
( partition by col2 order by col4 rows
between 3 following and unbounded following ) as col1,
first_value(col2) over
( partition by col2 order by col2 rows
between 3 following and unbounded following ) as col2,
first_value(col3) over
( partition by col2 order by col4 rows
between 3 following and unbounded following ) as col3,
col4
from t;
COL1 COL2 COL3 COL4
---- ---- ----- ----------
A A1 0,30 Pramisse 1
Pramisse 2
Pramisse 3
Pramisse 4
A A2 1 Pramisse 1
Pramisse 2
Pramisse 3
Pramisse 4
A A3 1 Pramisse 1
Pramisse 2
Pramisse 3
Pramisse 4