我有以下sql查询:
选择供应商,名称,日期,营业额 来自营业额 供应商订购
supplier name date turnover
-------- --------- ---------- ----------
001 supplier1 01.01.2012 129,67
001 supplier1 02.05.2012 12.145,89
001 supplier1 03.07.2012 6.830,90
002 supplier2 01.01.2012 -11,55
002 supplier2 03.09.2012 4.500,61
是否可以用NULL替换重复值,因此生成的表看起来像这样(见下文)?
supplier name date turnover
-------- --------- ---------- ----------
001 supplier1 01.01.2012 129,67
02.05.2012 12.145,89
03.07.2012 6.830,90
002 supplier2 01.01.2012 -11,55
03.09.2012 4.500,61
任何建议都将不胜感激!
答案 0 :(得分:1)
您可以使用row_number
:
select case row when 1 then supplier_orig else null end as supplier,
case row when 1 then name_orig else null end as name,
date, turnover
from (
select supplier AS supplier_orig, name AS name_orig, date, turnover,
row_number() over (partition by supplier order by date) as row
from turnover
)
order by supplier_orig, date
答案 1 :(得分:0)
您可以使用分析函数LAG
和NULLIF
函数。像
SQL> ed
Wrote file afiedt.buf
1 select nullif(deptno,
2 lag(deptno) over (order by deptno, ename)) formatted_deptno,
3 ename
4 from emp
5* order by deptno, ename
SQL> /
FORMATTED_DEPTNO ENAME
---------------- ----------
10 CLARK
KING
MILLER
20 ADAMS
FORD
JONES
SCOTT
SMITH
30 ALLEN
BLAKE
JAMES
MARTIN
TURNER
WARD
14 rows selected.