Преобразование двух строк таблицы в столбцы в SQL Server с помощью Pivot - PullRequest
0 голосов
/ 28 июня 2018

Я хочу преобразовать строки моих двух таблиц в столбцы.

Staff_salary table

SG_ID  Dist_id  Month_Id   Salary
----------------------------------
1       2          1       10000
1       2          2       20000
2       2          1       50000
2       2          2       45000

Расходы Таблица:

SG_ID  Dist_id  Month_Id  Expenditure
-------------------------------------
1       2          1          50000
1       2          2          25000
2       2          1          89555
2       2          2          87455

Я хочу объединить результаты этих двух таблиц и показать результаты следующим образом:

SG_ID  Dist_id  Month_1_Salary Month_2_Salary Month_1_Exp Month_2_Exp
---------------------------------------------------------------------
1        2            10000        20000           50000     25000
2        2            50000        45000           89555     87455

Я получаю результаты для отдельных таблиц в отдельных запросах. Но я хочу их в одном запросе. Это запрос, который я пробовал:

select 
    a.Dist_Id, a.sg_id,
    a.[1] as Salary_April, a.[2] as Salary_May, a.[3] as Salary_June,
    (a.[1] + a.[2] + a.[3]) as Total_Salary
from
    (select * 
     from  
         (select 
              sal.Dist_Id, sal.sg_id, sal.cal_total_salary, sal.Month_id
          from 
              tbl_staff_SalryGenrtd sal 
          where 
              dist_id = 2) as b   
     Pivot 
        (sum(cal_total_salary) for Month_id in ([1], [2], [3])
        ) as  Pvt) a

1 Ответ

0 голосов
/ 28 июня 2018

Ниже запрос должен дать то, что вы ищете.

SELECT SAL.SG_ID,SAL.Dist_id,SAL.[1] 'Month_1_Sal',SAL.[2] 'Month_2_Sal',
       EXPD.[1] 'Month_1_Exp',EXPD.[2] 'Month_2_Exp'
FROM 
(
    select SG_ID,Dist_id,P1.[1],P1.[2]
    FROM (SELECT SALARY,Month_Id,Dist_id,SG_ID  from tbl_staff_SalryGenrtd ) ST 
    PIVOT ( SUM(salary) for Month_Id in ([1],[2]) ) AS P1
) SAL JOIN 
(
    select SG_ID,Dist_id,P2.[1],P2.[2]
    FROM (SELECT Expenditure,Month_Id,Dist_id,SG_ID  from tbl_Expenditure ) ST 
    PIVOT ( SUM(Expenditure) for Month_Id in ([1],[2]) ) AS P2
) EXPD ON SAL.SG_ID=EXPD.SG_ID AND SAL.Dist_id=EXPD.Dist_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...