SSRS: новое вычисляемое поле на основе условия

Я новичок в отчетности SSRS, и мне нужна помощь...

У меня есть набор данных с полями Process, Level и Workweek

Process Level  WW
------- -----  --
Test    Lvl_0   3
Test    Lvl_1  28
Test    Lvl_2  48
Samp    Lvl_0  10
Samp    Lvl_1  39
Samp    Lvl_2  51

Теперь я хочу создать еще два вычисляемых поля с именами Start_WW и Pro_Start со значениями из поля WW.

WW Lvl_0 считается Process_Start.

логика примерно такая

Process Level  WW Start_WW Pro_Start
------- -----  -- -------- ---------
Test    Lvl_0   3    0       3
Test    Lvl_1  28    3       3
Test    Lvl_2  48   28       3
Samp    Lvl_0  10    0      10
Samp    Lvl_1  39   10      10
Samp    Lvl_2  51   39      10

Я знаю, что это похоже на SQL

Обновить таблицу SET Start_WW=(Выбрать WW из таблицы, где уровень='Lvl_0'), где уровень='Lvl_1'

Обновление таблицы SET Proc_Start=(Выберите WW из таблицы, где уровень='Lvl_0')

Я не уверен, как написать выражение для него. Пожалуйста, помогите мне.

Заранее спасибо!!


person damseldeebi    schedule 29.10.2014    source источник


Ответы (1)


Если Start_WW — это просто предыдущее WW, то вам даже не нужно вычисляемое поле; вы можете просто использовать функцию Previous() в выражении для ячейки таблицы:

=IIF(Fields!Process.Value = Previous(Fields!Process.Value), Previous(Fields!WW.Value), 0)

Для Pro_Start вы можете добавить это в свой SQL:

SELECT MyTable.Process, MyTable.Level, MyTable.WW, Start.Pro_Start 
FROM MyTable 
INNER JOIN (
    SELECT Process, Level, MIN(WW) AS Pro_Start 
    FROM MyTable 
    GROUP BY Process, Level
) Start ON MyTable.Process = Start.Process AND MyTable.Level = Start.Level

Без доступа к запросу вы можете получить Pro_Start с помощью Lookup():

=Lookup(Fields!Process.Value, Fields!Process.Value, Fields!WW.Value, "MyDataset")

Lookup() вернет первый экземпляр Process и даст вам WW этой строки.

person Chris Latta    schedule 29.10.2014
comment
Я пытался использовать Previous(), но я получаю данные другого процесса в качестве начала моего следующего, что неверно. - person damseldeebi; 29.10.2014
comment
Это сработало для Start_WW. Мой набор данных является общим набором данных, и я не могу получить доступ к конструктору запросов. так что делать Pro_Startсейчас. А также, вместо 0 в Lvl_0 из Start_WW смогу ли я ввести значение, скажем, Lvl_1.Value-4weeks? Является ли это возможным? - person damseldeebi; 30.10.2014
comment
Добавлен способ получить Pro_Start. Я не думаю, что вы можете делать то, что хотите, с Start_WW на Lvl_0, поскольку нет функции Next(), подобной функции Previous(). Вы должны открыть новый вопрос по этому конкретному вопросу, чтобы узнать, есть ли у кого-нибудь идеи о том, как это сделать. - person Chris Latta; 30.10.2014
comment
Я отправил новый вопрос относительно Start_WW. для Pro_Start я получаю сообщение об ошибке в Lookup() для последнего параметра, говорящего the value expression has a scope parameter that is not valid for lookup function. the scope parameter must be set to a string constant that is the name of a dataset. любая помощь в решении этого? - person damseldeebi; 31.10.2014
comment
Извините, моя ошибка - я поменял местами параметры набора данных и поля результатов - попробуйте синтаксис, показанный сейчас - person Chris Latta; 31.10.2014