0

Write sql query にある質問を拡張して行データをラップする

    DEPARTMENT  |   SUB_DEPT    |   EMPLOYEE    |   SALARY
    DEPT1       |   SUB_DEPT1   |   ABC         |   20000
    DEPT1       |   SUB_DEPT1   |   DEF         |   30000
    DEPT1       |   SUB_DEPT2   |   GHI         |   25000
    DEPT1       |   SUB_DEPT2   |   JKL         |   42000
    DEPT2       |   SUB_DEPT3   |   MNO         |   42500
    DEPT2       |   SUB_DEPT3   |   PQR         |   35000
    DEPT3       |   SUB_DEPT4   |   STU         |   36000
    DEPT3       |   SUB_DEPT5   |   VWX         |   36040

のように取得する

    DEPARTMENT  |   SUB_DEPT    |   EMPLOYEE    |   SALARY
    DEPT1       |   SUB_DEPT1   |   ABC         |   20000
                |               |   DEF         |   30000
                |   SUB_DEPT2   |   GHI         |   25000
                |               |   JKL         |   42000
    DEPT2       |   SUB_DEPT3   |   MNO         |   42500
                |               |   PQR         |   35000
    DEPT3       |   SUB_DEPT4   |   STU         |   36000
                |   SUB_DEPT5   |   VWX         |   36040

これは、1) 2 つの列にラッピングを適用する必要があることを意味します。2) 折り返しテキストは最初の行にある必要があります。つまり、DEPT1 は最初の行にのみ存在し、DEPT2 は 5 番目の行に存在する必要があります。

このために私を助けてください。

前もって感謝します。

4

1 に答える 1

2

元の投稿と同じプロセスに従うことができます。一意の部門ごとに を作成してrow_number()から、一意の部門sub_dept パーティションごとに同じことを行います。

select 
  case when deptrn = 1 then department else '' end department,
  case when SubDeptRn = 1 then sub_dept else '' end sub_dept,
  employee,
  salary
from
(
  select department, sub_dept, employee, salary,
    row_number() over(partition by department order by department, employee) DeptRn,
    row_number() over(partition by department, sub_dept order by department, sub_dept, employee) SubDeptRn
  from yourtable
) src

デモで SQL Fiddle を参照してください

結果:

| DEPARTMENT |  SUB_DEPT | EMPLOYEE | SALARY |
----------------------------------------------
|      DEPT1 | SUB_DEPT1 |      ABC |  20000 |
|            |           |      DEF |  30000 |
|            | SUB_DEPT2 |      GHI |  25000 |
|            |           |      JKL |  42000 |
|      DEPT2 | SUB_DEPT3 |      MNO |  42500 |
|            |           |      PQR |  35000 |
|      DEPT3 | SUB_DEPT4 |      STU |  36000 |
|            | SUB_DEPT5 |      VWX |  36040 |
于 2013-01-09T10:34:58.887 に答える