Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi!
I'm trying to do this;
if([Financing cost start date]<vStartDate,
sum({$<bk_account={1401,2990}, trans_date={[Financing cost start date]}>} trans_amt_sek/100)
* ((0.06/360)*(if([Financing cost end date]<vStartDate,[Financing cost end date], vStartDate) - [Financing cost start date])), 'N/A')
But. My guess is that the set analysis doesn't like "[Financing cost start date]" which is pre-defined in another expression in the same table. It consist of a lot of if statments and i tried to replace the defined [Financing cost start date] with the huge if-statement as well but i doesn't seem to work. How do i do this? Can i use an if statment in a set anaysis and how?
//A.
Hi Anykay,
You're right, the problem is that you can't directly use if-statements in set analysis. But you can use dollar-sign expansion to evaluate a function.
For example: sum( {<trans_date={'$(=if(Condition,01/01/2011,02/02/2011))'}>} trans_amt_sek )
The syntax is to use $(= function() ), and QV will replace the function with the result of it.
I did something similar with "count", by using the "if" after the set and before the field that you want to sum or count:
= count ({$<[Policy Submit Date] = {'>=$(=AddYears(Min([Appt Date]), -1)) < $(=Min([Appt Date]))'},
[Product Mktg Attendee] = , [Activity Completed] = , [Activity Cancelled] = , [Year] = , [Month] = , [Date] = >}
distinct if([Papers Only] = 'Y' and DateType = 'Policy Submit Date', [Policy #]))
Annika
Your guess is correct - you cannot use a value from another column of the table inside a set expression. Remember that set expressions are evaluated before the table is calculated, and [Financing cost start date] does not exist at that time. Apart from that I don't see any problems with your expression.
If your data set is not too large, you can convert the set expression to if statements. I think this should do it
if([Financing cost start date] < vStartDate,
Sum(If(Match(bk_account, 1401,2990) AND trans_date=[Financing cost start date], trans_amt_sek/100)
* ((0.06/360)*(if([Financing cost end date]<vStartDate,[Financing cost end date], vStartDate) - [Financing cost start date]))), 'N/A')
Set analysis is much better perfoming than sum-if expressions, so this may be slow if you have a large data set and/or complex model.
Hope this helps
Jonathan