Как объединить одинаковые строки с разными столбцами? - PullRequest
0 голосов
/ 28 января 2020

У меня есть такая таблица:

--------------------------------------------
| Job | Class | Employee | PayType | Hours |
| 212     A      John         1        20  |
| 212     A      John         2        10  |
| 911     C      Rebekah      1        15  |
| 911     C      Rebekah      2        10  |
--------------------------------------------

Я хочу преобразовать эту таблицу, чтобы получить следующий вывод

------------------------------------
| Job | Class | Employee | OT | ST |
| 212 |   A   | John     | 20 | 10 |
| 911 |   C   | Rebekah  | 15 | 10 |
------------------------------------

Здесь я установил 1 для OT и 2 для ST

Ответы [ 2 ]

3 голосов
/ 28 января 2020

Вы можете условно агрегировать:

select 
    job,
    class,
    employee
    sum(case when paytype = 1 then hours else 0 end) ot,
    sum(case when paytype = 2 then hours else 0 end) st
from mytable
group by
    jobs,
    class,
    employee
0 голосов
/ 28 января 2020

Использование PIVOT TABLE:

select 
   Job,
   Class,
   Employee,
   [1] as OT, 
   [2] as ST from
   (
      select * from test2
   ) as t
   pivot
   (
      sum([Hours])
      for paytype in([1],[2])
   ) as pvt;
...