<div dir="ltr"><font face="trebuchet ms, sans-serif">Julian,</font><div><font face="trebuchet ms, sans-serif"><br></font></div><div><font face="trebuchet ms, sans-serif">I will highly appreciate to get your feedback.</font></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div><font face="trebuchet ms, sans-serif"><br></font></div><font face="trebuchet ms, sans-serif">King regards,</font><div><font face="trebuchet ms, sans-serif">Andrey Khayrutdinov</font></div></div></div>
<br><div class="gmail_quote">2015-09-08 23:23 GMT+04:00 Andrey Khayrutdinov <span dir="ltr">&lt;<a href="mailto:andrey.khayrutdinov@gmail.com" target="_blank">andrey.khayrutdinov@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><font face="trebuchet ms, sans-serif" style="font-size:12.8px">Dear all,</font><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">I&#39;ve picked up <a href="http://jira.pentaho.com/browse/MONDRIAN-1272" target="_blank">MONDRIAN-1272</a>. It is about shrinking tuples having no corresponding data in the fact table.</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">The approach to avoid such behaviour is to use OUTER JOIN.</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">The general routine is the following:</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">Let current SQL query be called </font><font face="monospace, monospace">SUBSELECT_Q</font><font face="trebuchet ms, sans-serif">. It is created by combining different levels and then linking them with a constraint through the fact table. Let&#39;s call these combined levels </font><font face="monospace, monospace">CROSSJOIN_Q</font><font face="trebuchet ms, sans-serif">.</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">So we can execute this query:</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><blockquote style="font-size:12.8px;margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="monospace, monospace">SELECT </font></div><div><font face="monospace, monospace">FROM SUBSELECT_Q</font></div><div><font face="monospace, monospace">RIGHT JOIN CROSSJOIN_Q</font></div></blockquote><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">And this is the general schema.</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">Level should be combined not by linking via the fact table (that will change nothing), but with </font><font face="monospace, monospace">CROSS JOIN</font><font face="trebuchet ms, sans-serif"> operator.</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif">As an example, here is an MDX query:</font></div><div style="font-size:12.8px"><font face="trebuchet ms, sans-serif"><br></font></div><div style="font-size:12.8px"><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="2" color="#2E2D2F"><span style="font-size:9pt">SELECT [Measures].[Unit Sales] on columns,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="2" color="#2E2D2F"><span style="font-size:9pt">TopCount(Crossjoin([Product].[Product Category].Members, [Customers].[City].Members), 10, [Measures].[Unit Sales]) on rows</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="2" color="#2E2D2F"><span style="font-size:9pt">FROM [Sales]</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="2" color="#2E2D2F"><span style="font-size:9pt">WHERE [Time].[1997].[Q3]</span></font></span></font></div><div><div><font face="trebuchet ms, sans-serif"><br></font></div><div><font face="trebuchet ms, sans-serif">and here is the monstrous SQL query, produced via the schema above:</font></div><div><font face="trebuchet ms, sans-serif"><br></font></div><div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">select</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj0` as `c0`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj1` as `c1`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj2` as `c2`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj3` as `c3`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj4` as `c4`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          crossj.`cj5` as `c5`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          subsel.`c6` as `c6`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">from (</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          select</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_family` as `c0`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_department` as `c1`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_category` as `c2`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`country` as `c3`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`state_province` as `c4`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`city` as `c5`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   sum(`sales_fact_1997`.`unit_sales`) as `c6`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          from</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product` as `product`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class` as `product_class`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `sales_fact_1997` as `sales_fact_1997`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer` as `customer`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `time_by_day` as `time_by_day`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          where</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product`.`product_class_id` = `product_class`.`product_class_id` and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `sales_fact_1997`.`product_id` = `product`.`product_id` and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `sales_fact_1997`.`customer_id` = `customer`.`customer_id` and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `sales_fact_1997`.`time_id` = `time_by_day`.`time_id` and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `time_by_day`.`the_year` = 1997 and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `time_by_day`.`quarter` = &#39;Q3&#39;</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          group by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_family`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_department`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `product_class`.`product_category`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`country`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`state_province`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `customer`.`city`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          order by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   sum(`sales_fact_1997`.`unit_sales`) DESC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`product_class`.`product_family`) ASC, `product_class`.`product_family` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`product_class`.`product_department`) ASC, `product_class`.`product_department` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`product_class`.`product_category`) ASC, `product_class`.`product_category` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`customer`.`country`) ASC, `customer`.`country` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`customer`.`state_province`) ASC, `customer`.`state_province` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   ISNULL(`customer`.`city`) ASC, `customer`.`city` ASC</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">) as `subsel`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">right join (</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          select</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t0`.`product_family` as `cj0` ,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t0`.`product_department` as `cj1` ,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t0`.`product_category` as `cj2` ,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t1`.`country` as `cj3` ,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t1`.`state_province` as `cj4` ,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   `t1`.`city` as `cj5`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          from (</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   select</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_family` as `product_family`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_department` as `product_department`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_category` as `product_category`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   from</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product` as `product`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class` as `product_class`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   where</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product`.`product_class_id` = `product_class`.`product_class_id`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   group by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_family`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_department`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `product_class`.`product_category`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   order by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`product_class`.`product_family`) ASC, `product_class`.`product_family` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`product_class`.`product_department`) ASC, `product_class`.`product_department` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`product_class`.`product_category`) ASC, `product_class`.`product_category` ASC</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ) as t0</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          cross join (</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   select</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`country` as `country`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`state_province` as `state_province`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`city` as `city`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   from</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer` as `customer`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   group by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`country`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`state_province`,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             `customer`.`city`</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                   order by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`customer`.`country`) ASC, `customer`.`country` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`customer`.`state_province`) ASC, `customer`.`state_province` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">                             ISNULL(`customer`.`city`) ASC, `customer`.`city` ASC</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ) as t1</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">) as `crossj` on</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c0` = `crossj`.`cj0`) and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c1` = `crossj`.`cj1`) and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c2` = `crossj`.`cj2`) and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c3` = `crossj`.`cj3`) and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c4` = `crossj`.`cj4`) and</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          (`subsel`.`c5` = `crossj`.`cj5`) </span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">order by</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          subsel.`c6` DESC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj0`) ASC, crossj.`cj0` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj1`) ASC, crossj.`cj1` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj2`) ASC, crossj.`cj2` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj3`) ASC, crossj.`cj3` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj4`) ASC, crossj.`cj4` ASC,</span></font></span></font></div><div style="color:rgb(33,33,33);font-family:&#39;Segoe UI&#39;,&#39;Segoe WP&#39;,&#39;Segoe UI WPC&#39;,Tahoma,Arial,sans-serif;font-size:15px;margin:0px 0px 0px 36pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font face="Consolas" size="1" color="#2E2D2F"><span style="font-size:7pt">          ISNULL(crossj.`cj5`) ASC, crossj.`cj5` ASC</span></font></span></font></div></div><div><font face="trebuchet ms, sans-serif"><br></font></div><div><font face="trebuchet ms, sans-serif">Unfortunately, Mondrian does not have many tools for manipulating with SQL, thus I made my own.</font></div><div><font face="trebuchet ms, sans-serif">I have completed the POC, it passes almost all prepared tests and before starting polishing it I asked Matt C if he had any objection against the approach. He told me to ask the community, and here I am with this thread.</font></div><div><font face="trebuchet ms, sans-serif"><br></font></div><div><font face="trebuchet ms, sans-serif">My current work was pushed here: <a href="https://github.com/akhayrutdinov/mondrian/tree/NativeTopCount" target="_blank">https://github.com/akhayrutdinov/mondrian/tree/NativeTopCount</a>.</font></div><div><font face="trebuchet ms, sans-serif">It consists of two commits:</font></div><div><ol><li style="margin-left:15px"><font face="trebuchet ms, sans-serif">Tests for TopCount: <a href="https://github.com/akhayrutdinov/mondrian/commit/3963fb37a7da8284bb5ed1ddb79825c6bf7018cf" target="_blank">https://github.com/akhayrutdinov/mondrian/commit/3963fb37a7da8284bb5ed1ddb79825c6bf7018cf</a></font></li><li style="margin-left:15px"><font face="trebuchet ms, sans-serif">My changes: <a href="https://github.com/akhayrutdinov/mondrian/commit/2436bfbd6cca007f0f3fd866b8e61e7f4c2adb5c" target="_blank">https://github.com/akhayrutdinov/mondrian/commit/2436bfbd6cca007f0f3fd866b8e61e7f4c2adb5c</a></font></li></ol><div><font face="trebuchet ms, sans-serif">I want to ask your opinion whether the approach is acceptable not to spend time for improving the code that will be rejected.</font></div></div><div><font face="trebuchet ms, sans-serif"><br></font></div><font face="trebuchet ms, sans-serif">Best regards,</font><div><font face="trebuchet ms, sans-serif">Andrey Khayrutdinov</font></div></div></div>
</div>
</blockquote></div><br></div>