SQL Запрос на преобразование количества строк в столбец - PullRequest
0 голосов
/ 10 июля 2020

Я написал следующий запрос -

SELECT element_name,
element_start_date,
element_end_date,
period_name,
element_classfication,
Person_number
from per_elements
where element_name in ('Employer Contribution','HSA Employee Contribution')

дает следующий результат

Element_name                element_start_date          element_end_date            Period_name             element_classfication   Person_number   Amount                      
Employer Contribution       6/14/2020                   6/27/2020                   14 2020 Biweekly        Liability               100             38
HSA Employee Contribution   6/14/2020                   6/27/2020                   14 2020 Biweekly        Deduction               100             19

Могу ли я изменить приведенный выше запрос так, чтобы получить следующий результат -

element_start_date    element_end_date   Period_name        Person_number       Employer contribution amount    Employee contribution amount                        
6/14/2020             6/27/2020         14 2020 Biweekly    100                 38                              19  
        

Могу ли я преобразовать отдельные строки в столбцы, чтобы сумма отображалась рядом.

Ответы [ 2 ]

0 голосов
/ 10 июля 2020
select *
from 
   (
   select Element_name,element_start_date,element_end_date,Period_name,Person_number,Amount
   from per_elements
   where element_name in ('Employer Contribution','HSA Employee Contribution')
   )
pivot (
  sum(amount)
  for Element_name in ('Employer Contribution','HSA Employee Contribution')
)
/
0 голосов
/ 10 июля 2020

Вы можете использовать условное агрегирование следующим образом:

SELECT element_start_date,
       element_end_date,
       period_name,
       Person_number,
       max(case when element_name = 'Employer Contribution' then amount end) 
         as employer_contribution_amount,
       max(case when element_name = 'HSA Employee Contribution' then amount end) 
         as employee_contribution_amount
    from per_elements
   where element_name in ('Employer Contribution','HSA Employee Contribution')
group by element_start_date,
         element_end_date,
         period_name,
         Person_number;
...