В SQL, как я могу показать первую строку группы и скрыть один столбец в остальной части группы - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь экспортировать запрос SQL в Excel, и мне нужно это поведение, но я нигде не могу найти.

Это то, что у меня сейчас есть:

SELECT t1.c1, t2.c2
FROM table1 t1 
INNER JOIN table2 t2 ON t1.id = t2.id;
|c1|    c2     |
----------------
|a | sometext1 |
|a | sometext2 |
|a | sometext3 |
|a | sometext4 |
|b | sometext5 |
|b | sometext6 |
|b | sometext7 |

Я хочу показать такие результаты:

|c1|    c2     |
|a | sometext1 |
|  | sometext2 |
|  | sometext3 |
|  | sometext4 |
|b | sometext5 |
|  | sometext6 |
|  | sometext7 |

Я хочу показать только первый элемент в каждой группе и скрыть остальные, чтобы они не отображались в Excel. Я использую SQL Сервер.

1 Ответ

2 голосов
/ 26 мая 2020

Вы действительно должны выполнять этот тип обработки в приложении, а не в базе данных. Зачем? Потому что наборы результатов представляют неупорядоченные наборы. Использование порядка для понимания данных делает результаты нестабильными.

Но вы можете. Один из способов:

select (case when seqnum = 1 then c1 end) as c1, c2
from (select, t.*,
              row_number() over (partition by c1 order by (select null)) as seqnum
      from t
     ) t
order by c1, seqnum;
...