sql - Compare dataset with another dataset for multiple Columns/Values SSRS -
this image reference. let me explain scenario.
there 2 datasets , b can see, dataset b has actual tests values , dataset has target values (more ranges). code compares each test (blk ...) value target test (blk ...) value, code shown below
=iif(len(lookup("ur_limit",fields!limits.value,fields!blk.value,"target")) <= 0, ( iif(fields!blk.value > lookup("uw_limit",fields!limits.value,fields!blk.value,"target"),"yellow", iif(fields!blk.value < lookup("lw_limit",fields!limits.value,fields!blk.value,"target"),"yellow","green")) ), ( iif(fields!blk.value > lookup("ur_limit",fields!limits.value,fields!blk.value,"target"),"red", iif(fields!blk.value > lookup("uw_limit",fields!limits.value,fields!blk.value,"target"),"yellow", iif(fields!blk.value < lookup("lr_limit",fields!limits.value,fields!blk.value,"target"),"red", iif(fields!blk.value < lookup("lw_limit",fields!limits.value,fields!blk.value,"target"),"yellow","green")))) )) now problem face is, cant compare each products test (from b) values specific products target values in dataset a. ends happening each test in b compared last target product values in dataset a.
concatenating product , limit fields possible mentioned in comments. lookup function can use string pass search value. note following example:
lookup(fields!product.value & "-" & "ur_limit",...,"testtargetdataset") it 905200-ur_limit , return blk value upper limit test target values. of course have create calculated field in testtarget dataset , set concatenation of product , limit fields.
i've recreated scenario using tables provided. first created calculated field named prlimit in test target dataset , set expression:
=fields!product.value & "-" & fields!limits.value as mentioned in comments have multiple columns, have use different expression each column:
=switch( fields!blk.value > lookup(fields!product.value & "-" & "uw_limit",fields!prlimit.value,fields!blk.value,"dataset9"), "red", fields!blk.value > lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!blk.value,"dataset9"), "yellow", fields!blk.value = lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!blk.value,"dataset9"), "green", fields!blk.value < lookup(fields!product.value & "-" & "lw_limit",fields!prlimit.value,fields!blk.value,"dataset9"), "red", fields!blk.value < lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!blk.value,"dataset9"), "yellow" ) =switch( fields!bw.value > lookup(fields!product.value & "-" & "uw_limit",fields!prlimit.value,fields!bw.value,"dataset9"), "red", fields!bw.value > lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!bw.value,"dataset9"), "yellow", fields!bw.value = lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!bw.value,"dataset9"), "green", fields!bw.value < lookup(fields!product.value & "-" & "lw_limit",fields!prlimit.value,fields!bw.value,"dataset9"), "red", fields!bw.value < lookup(fields!product.value & "-" & "target",fields!prlimit.value,fields!bw.value,"dataset9"), "yellow" ) the above expressions used right color blk , bw columns respectively. logic used is:
- if blk value greater
uwblk value: color in red - else if blk value greater
targetvalue: color in yellow - else if blk value equal
targetvalue: color in green - else if blk value less
lwblk value: color in red - else if blk value less
targetblk value: color in yellow
this final result data provided in question:
let me know if helps.


Comments
Post a Comment