<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Calculate PRODUCT on negative values in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142010#M374047</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 13.3333px;"&gt;I ended up having a formula which had to apply the PRODUCT function on the daily performances to calculate the aggregated month performance.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The daily performances could be both positive and negative:&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" height="199" style="border: 1px solid #000000; width: 177px; height: 147px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Day&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Perf&lt;/STRONG&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;01.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;1%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;02.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;-1%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;03.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;5%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;04.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;-20%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;05.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;10%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;06.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;6%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;I could not use &lt;STRONG&gt;$(=Concat(Perf,'*'))&lt;/STRONG&gt; as I was using a Pivot table where for each level the aggregations should have been on different fields.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;Exp(Sum(Log(Perf)))&lt;/STRONG&gt; works fine only on positive numbers: Log on negative values produces an error and Sum skips these errors.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;I'd like to share the formula for finding the PRODUCT of all the numbers, positive and negative included.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The final formula is the following:&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;Exp( &lt;/STRONG&gt;&lt;/SPAN&gt;// PRODUCT function&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fabs(Perf) &lt;/STRONG&gt;&lt;/SPAN&gt;//Treat all values as if they were positive&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;* ( &lt;/STRONG&gt;&lt;/SPAN&gt;// Determine final sign&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mod(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sign(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sign(Perf) - 1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), 2&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) * -2 + 1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The approach is this: execute the PRODUCT function on all the numbers converted to positive numbers and multiply it to 1 or -1 according to what is necessary.&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" style="border: 1px solid #000000; width: 100%;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Function&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;Explanation&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sign(Perf) - 1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Remove positive signs: (-1, 0, 1) - 1 =&amp;gt; (-2, -1, 0)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sign( sign(Perf) - 1 )&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Convert all negatives to -1; zeros remain 0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sum(...)&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Sum up all the negatives to determine if they are odd or even&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;mod(..., 2)&lt;/TD&gt;&lt;TD&gt;Check if the final number of negative values is odd or even&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;mod(..., 2) * -2 + 1&lt;/TD&gt;&lt;TD&gt;Convert mod result (1 or 0) into (-1 or 1)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The final expression sounds like: PRODUCT([Positive values]) * [-1 if odd negative values or 1 if even negative values].&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;Is there any better way to doing this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 07 Jun 2016 14:31:41 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2016-06-07T14:31:41Z</dc:date>
    <item>
      <title>Calculate PRODUCT on negative values</title>
      <link>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142010#M374047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 13.3333px;"&gt;I ended up having a formula which had to apply the PRODUCT function on the daily performances to calculate the aggregated month performance.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The daily performances could be both positive and negative:&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" height="199" style="border: 1px solid #000000; width: 177px; height: 147px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Day&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Perf&lt;/STRONG&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;01.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;1%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;02.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;-1%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;03.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;5%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;04.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;-20%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;05.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;10%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;06.01.2016&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;6%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;I could not use &lt;STRONG&gt;$(=Concat(Perf,'*'))&lt;/STRONG&gt; as I was using a Pivot table where for each level the aggregations should have been on different fields.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;Exp(Sum(Log(Perf)))&lt;/STRONG&gt; works fine only on positive numbers: Log on negative values produces an error and Sum skips these errors.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;I'd like to share the formula for finding the PRODUCT of all the numbers, positive and negative included.&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The final formula is the following:&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;Exp( &lt;/STRONG&gt;&lt;/SPAN&gt;// PRODUCT function&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fabs(Perf) &lt;/STRONG&gt;&lt;/SPAN&gt;//Treat all values as if they were positive&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;* ( &lt;/STRONG&gt;&lt;/SPAN&gt;// Determine final sign&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mod(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sign(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sign(Perf) - 1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), 2&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) * -2 + 1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The approach is this: execute the PRODUCT function on all the numbers converted to positive numbers and multiply it to 1 or -1 according to what is necessary.&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" style="border: 1px solid #000000; width: 100%;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;STRONG&gt;Function&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;Explanation&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sign(Perf) - 1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Remove positive signs: (-1, 0, 1) - 1 =&amp;gt; (-2, -1, 0)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sign( sign(Perf) - 1 )&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Convert all negatives to -1; zeros remain 0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;sum(...)&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;Sum up all the negatives to determine if they are odd or even&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;mod(..., 2)&lt;/TD&gt;&lt;TD&gt;Check if the final number of negative values is odd or even&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;mod(..., 2) * -2 + 1&lt;/TD&gt;&lt;TD&gt;Convert mod result (1 or 0) into (-1 or 1)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;The final expression sounds like: PRODUCT([Positive values]) * [-1 if odd negative values or 1 if even negative values].&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333px;"&gt;Is there any better way to doing this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Jun 2016 14:31:41 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142010#M374047</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-06-07T14:31:41Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate PRODUCT on negative values</title>
      <link>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142011#M374048</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The second part could probably also written as&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* If(Mod(Sum(Perf&amp;lt;0),2)=1,-1,1)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Jun 2016 15:03:36 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142011#M374048</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2016-06-07T15:03:36Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate PRODUCT on negative values</title>
      <link>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142012#M374049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;Sum should be Count then.&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;Though I avoid at all cost per record comparisons like sum(perf&amp;lt;0).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jun 2016 07:23:17 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142012#M374049</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-06-08T07:23:17Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate PRODUCT on negative values</title>
      <link>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142013#M374050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;Valeriy Shylin wrote:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;Sum should be Count then.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;Though I avoid at all cost per record comparisons like sum(perf&amp;lt;0).&lt;/P&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;No, I think Sum() should be Sum().&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I believe the Sum(perf&amp;lt;0) is not much different from your Sum(Sign(Perf))&lt;/P&gt;&lt;P&gt;[ignoring the additional Sign() and addition for now].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can also replace the Mod() with Odd / Even:&lt;/P&gt;&lt;P&gt;* If(Odd(Sum(Perf&amp;lt;0)),-1,1)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think this expression comes closest to your original pseudo code:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13.3333px;"&gt;&lt;EM&gt;[-1 if odd negative values or 1 if even negative values]&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or if you prefer not to use the if() function:&lt;/P&gt;&lt;P&gt;* (Odd(Sum(Perf&amp;lt;0))*2+1)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am just trying to suggest an alternative approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Stefan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jun 2016 20:01:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Calculate-PRODUCT-on-negative-values/m-p/1142013#M374050</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2016-06-08T20:01:03Z</dc:date>
    </item>
  </channel>
</rss>

