Oracle SQL скрывает повторяющиеся значения - PullRequest
2 голосов
/ 10 июня 2011

У меня есть запрос с этими результатами:

A | 1
A | 2
B | 1
B | 2
B | 3

Как мне сделать так, чтобы результаты были такими:

A | 1
  | 2  
B | 1   
  | 2   
  | 3

Ответы [ 6 ]

4 голосов
/ 11 июня 2011

Вот один из способов:

SELECT CASE WHEN rn = 1 THEN c1 ELSE NULL END || ' | ' || c2
  FROM (SELECT c1, c2, ROW_NUMBER() OVER (PARTITION BY c1 ORDER BY c2) rn
          FROM your_table);
3 голосов
/ 11 июня 2011

Вы можете использовать BREAK ON, если используете sqlplus:

SQL> desc tab1;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL                                                VARCHAR2(1)
 COL2                                               NUMBER

SQL> select * from tab1;

C       COL2
- ----------
A          1
A          2
B          1
B          2
B          3

SQL> break on col;
SQL> select * from tab1;

C       COL2
- ----------
A          1
           2
B          1
           2
           3

SQL>

Подробнее здесь .

2 голосов
/ 11 июня 2011

Я смело помню, что есть способ получить этот формат в SQL PLus. Другой возможный способ приведен ниже:

SELECT a.COLUMN_1,
             CASE 
                WHEN a.rnk = 1 THEN a.COLUMN_2 
                ELSE NULL
            END AS COLUMN_2 
  FROM (
                SELECT a.*,
                    RANK() OVER(PARTITION BY COLUMN_1 ORDER BY COLUMN2) rnk
                    FROM <YOUR_TABLE> a
                ) a
1 голос
/ 11 июня 2011

в oracle, проверьте функции LEAD и LAG.

, вы можете посмотреть предыдущую строку, и, если она совпадает с текущей строкой, измените значение на NULL.

1 голос
/ 11 июня 2011

Это больше проблема форматирования, лучше всего решаемая тем, что вы используете для отображения вывода. Нет ничего плохого в результате запроса, как результат запроса .

1 голос
/ 11 июня 2011

Это требование к представлению лучше всего выполнять в приложении, которое вы используете для отображения результатов, а не в необработанном SQL. Вы можете удовлетворить ваши требования с помощью курсора, но это не очень элегантное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...