Неверное имя столбца для сводной таблицы - PullRequest
0 голосов
/ 27 марта 2020

Я пытался создать сводную таблицу из моего запроса, когда я выбираю select *, он работает нормально, но когда я пытаюсь выбрать столбцы, как показано в приведенном ниже коде, это выдает мне ошибку. Неправильное имя столбца

 select sr,PayDescr,PayMonAmt from (select sr= case when rtrim(Ctname.PayCat)='GS' then  1
                when rtrim(Ctname.PayCat)='BS' then  2
                when rtrim(Ctname.PayCat)='HA' then  3
                when rtrim(Ctname.PayCat)='TA' then  4
                when rtrim(Ctname.PayCat)='FA' then  5
                else 6 end
, PayDescr = rtrim(Ctname.Descr),SUM(PayMonAmt) as PayMonAmt  from 
maEmpPay mn
outer apply(
        select Descr,PayCat from maPayCat pc
        where mn.PayCat = pc.PayCat
        )Ctname
where  EmpID = mn.EmpID group by Ctname.Descr, Ctname.PayCat)   pv 
 pivot
 (
 sum (PayMonAmt) for PayDescr IN ([Basic Salary],[Food Allowance],[Tuition 
 Allowance],[Transportation Allowance])
 ) AS e 

рабочий код

 select * from (  select sr= case when rtrim(Ctname.PayCat)='GS' then  1
                when rtrim(Ctname.PayCat)='BS' then  2
                when rtrim(Ctname.PayCat)='HA' then  3
                when rtrim(Ctname.PayCat)='TA' then  4
                when rtrim(Ctname.PayCat)='FA' then  5
                else 6 end
, PayDescr = rtrim(Ctname.Descr),SUM(PayMonAmt) as PayMonAmt  from 
maEmpPay mn
outer apply(
        select Descr,PayCat from maPayCat pc
        where mn.PayCat = pc.PayCat
        )Ctname where  EmpID = mn.EmpID group by Ctname.Descr, Ctname.PayCat
)   pv 
 pivot
 (
 sum (PayMonAmt) for PayDescr IN ([Basic Salary],[Food Allowance],[Tuition 
 Allowance],[Transportation Allowance])
 ) AS e

Ответы [ 2 ]

1 голос
/ 27 марта 2020

получено решение

SELECT
sr,
[Basic Salary],
[Food Allowance],
[Tuition Allowance],
[Transportation Allowance] FROM (
SELECT
    sr = CASE
        when rtrim(Ctname.PayCat)='GS' then  1
        when rtrim(Ctname.PayCat)='BS' then  2
        when rtrim(Ctname.PayCat)='HA' then  3
        when rtrim(Ctname.PayCat)='TA' then  4
        when rtrim(Ctname.PayCat)='FA' then  5
        else 6
    END,
    PayDescr = rtrim(Ctname.Descr),
    SUM(PayMonAmt) as PayMonAmt
FROM
    maEmpPay As mn
    OUTER APPLY
    (
        SELECT Descr, PayCat 
        FROM maPayCat pc
        WHERE mn.PayCat = pc.PayCat
    ) As Ctname


WHERE
    EmpID = mn.EmpID 

GROUP BY
    Ctname.Descr, 
    Ctname.PayCat) PIVOT(
SUM(PayMonAmt) FOR PayDescr IN 
(
    [Basic Salary],
    [Food Allowance],
    [Tuition Allowance],
    [Transportation Allowance]
)) As e 
0 голосов
/ 27 марта 2020

Поскольку это сводный запрос, удалите PayMonAmt и добавьте [Basi c Зарплата], [Пособие на питание], [Пособие на обучение], [Пособие на транспорт]. Дайте мне знать, если ваш запрос все еще не решен:

    select sr,PayDescr,[Basic Salary],[Food Allowance],[Tuition Allowance],[Transportation Allowance] from 
          (select sr= case when rtrim(Ctname.PayCat)='GS' then  1 when rtrim(Ctname.PayCat)='BS' then  2
            when rtrim(Ctname.PayCat)='HA' then  3
            when rtrim(Ctname.PayCat)='TA' then  4
            when rtrim(Ctname.PayCat)='FA' then  5
            else 6 end , PayDescr = rtrim(Ctname.Descr),SUM(PayMonAmt) as PayMonAmt  
            from maEmpPay mn
            outer apply(
    select Descr,PayCat from maPayCat pc
    where mn.PayCat = pc.PayCat
    )Ctname
    where  EmpID = mn.EmpID group by Ctname.Descr, Ctname.PayCat)   pv 
    pivot
    (
     sum (PayMonAmt) for PayDescr IN ([Basic Salary],[Food Allowance],[Tuition Allowance],[Transportation Allowance])) AS e 
...