Использование оператора Case для замены значения в одном поле на основе значения в отдельном поле

Я создаю отчет в SSRS, и я не могу использовать оператор IIF в отчете, чтобы выполнить следующее. Я получаю совокупные ошибки, когда пытаюсь суммировать данные в отчете SSRS.

`IIF(Fields!Period=0,0,IIF(Period=13,0,Balance/12))`

Работает нормально до тех пор, пока я не попытаюсь суммировать... получить глупую агрегированную ошибку "Функции агрегирования, отличные от First, Last, Previous, Count и Count Distinct, могут агрегировать только данные одного типа данных"... Это все целые числа .

По сути, у меня есть значение в Master.Balance, которое мне нужно разделить на 12 только тогда, когда Secondary.Period равен 0 или 13. Если Secondary.Period равен 0 или 13, тогда значение должно быть 0. Я знаю, что моя проблема связана с включением отношения между таблицами, но я просто не знаю, как это записать.

Вот что я пытаюсь использовать:

`CASE 
     WHEN Secondary.Period=0 OR Secondary.Period=13 
         THEN 0 
         ELSE Master.Balance/12 
End As BudByPer`

Вот как эти две таблицы связаны друг с другом:

`FROM Master LEFT OUTER JOIN Secondary 

ON Master.Project = Secondary.Project 
AND Master.object = Secondary.object 
AND Master.org = Secondary.org

`

Как мне получить вышеизложенное в это:

    SELECT DISTINCT Master.Project, Master.Object, Master.Fund, Master.Segment, Master.Balance, Secondary.project, Secondary.object, Secondary.org, Secondary.Period, Secondary.object, Secondary.Project.

    FROM Master LEFT OUTER JOIN Secondary 
        ON Master.Project = Secondary.Project 
        AND Master.object = Secondary.object 
        AND Master.org = Secondary.org

WHERE (Master.object>=600000)
ORDER BY [Master.Fund]

person sethb    schedule 03.04.2014    source источник
comment
Мне нужно, чтобы мой оператор select включал намного больше, чем только это одно поле. В настоящее время мой оператор выбора: Select Master.account, Master.Bud, Master.Project, Master.object, Master.org, Segment.bud, Segment.type, Secondary.Period, Secondary.project, Secondary.object, Secondary.org. .. и выбрано больше полей... Мне нужно добавить поле BudbyPer к остальным.   -  person sethb    schedule 04.04.2014


Ответы (1)


Вам просто нужно выбрать, это выглядит хорошо для меня...

SELECT 
    Master.account, 
    Master.segment,  
    Secondary.desc, 
    Secondary.bud, 
    Segment.Num, 
    Segment.office,
    CASE 
        WHEN Secondary.Period=0 OR Secondary.Period=13 THEN 0 
        ELSE Master.Balance/12 
    End As BudByPer
FROM Master 
LEFT JOIN Secondary 
    ON Master.Project = Secondary.Project 
    AND Master.object = Secondary.object 
    AND Master.org = Secondary.org
person Metaphor    schedule 03.04.2014
comment
В моем операторе select есть много других вещей... Select Master.account, Master.segment, Secondary.desc, Secondary.bud, Segment.Num, Segment.office - person sethb; 04.04.2014
comment
Как написать полный оператор выбора? - person sethb; 10.04.2014