1

我有以下 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

任何意见,将不胜感激!

4

2 回答 2

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

SQL小提琴在这里

于 2013-04-02T21:06:15.357 回答
0

你可以使用解析函数LAGNULLIF函数。就像是

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.
于 2013-04-02T21:03:22.937 回答