Транспонировать различные даты из строк в столбцы в sql - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть запрос, пример:

Letter |   Date
  A    | 2/22/12
  A    | 5/13/11
  A    | 6/11/20
  A    | 3/15/13
  B    | 9/30/15
  B    | 7/22/04
  C    | 2/24/16
  C    | 6/09/16
  C    | 5/01/11

Таким образом, сами даты различаются, а также количество дат в письме варьируется. Я хотел бы построить следующее в sql:

Letter |   Date     |   Date1    |   Date2    |   Date3      
  A    | 2/22/12    | 5/13/11    |  6/11/20   |  3/15/13
  B    | 9/30/15    | 7/22/04    |    Null    |   Null
  C    | 2/24/16    | 6/09/16    |  5/01/11   |   Null

Я видел аналогичный пост , но в моем реальном коде идентификаторы A, B, C рандомизированы 6 ди git значений, и их тысячи ..

Буду признателен за любой совет.

1 Ответ

0 голосов
/ 04 апреля 2020

Один метод использует row_number() и условное агрегирование для поворота по фиксированному количеству столбцов:

select
    letter,
    max(case when rn = 1 then date end) date1,
    max(case when rn = 2 then date end) date2,
    max(case when rn = 3 then date end) date3,
    max(case when rn = 4 then date end) date4
from (
    select t.*, row_number() over(partition by letter order by date) rn
    from mytable t
) t
group by letter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...