doc-exports/docs/dws/tool/dws_mt_0091.html
Lu, Huayi 346ac31da9 DWS TG 8.1.3.200 VERSION
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Reviewed-by: Jiang, Beibei <beibei.jiang@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2023-08-28 09:20:17 +00:00

156 lines
28 KiB
HTML

<a name="EN-US_TOPIC_0000001234200637"></a><a name="EN-US_TOPIC_0000001234200637"></a>
<h1 class="topictitle1">Query Optimization Operators</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p34870561809">This section describes the syntax for migrating Teradata query optimization operators. The migration syntax determines how the keywords and features are migrated.</p>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p29855663114453">Use the <a href="dws_mt_0026.html#EN-US_TOPIC_0000001233922159__en-us_topic_0218440346_li9993144993210">inToExists</a> parameter to configure the migration from <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b6163359814432">IN</strong> or<strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b6613950814436">NOT IN</strong> to <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b6091412014439">EXISTS</strong> or <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b5102266144312">NOT EXISTS</strong>.</p>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p62893222114444">This parameter defaults to <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b62506160534">FALSE</strong>. To enable the query optimization feature, this parameter must be set to <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1532911192538">TRUE</strong>.</p>
<div class="section" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_section102601577415"><a name="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_section102601577415"></a><a name="en-us_topic_0238518365_en-us_topic_0237362248_section102601577415"></a><h4 class="sectiontitle">IN and NOT IN Conversion</h4><p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p52874701114937">When being converted to <span id="EN-US_TOPIC_0000001234200637__text1958020141713">GaussDB(DWS)</span> SQL queries, Teradata queries containing the <strong id="EN-US_TOPIC_0000001234200637__b871694433413">IN</strong> and <strong id="EN-US_TOPIC_0000001234200637__b1799005413348">NOT IN</strong> operators have been optimized, and <strong id="EN-US_TOPIC_0000001234200637__b1050017161432">IN</strong> and <strong id="EN-US_TOPIC_0000001234200637__b150231618431">NOT IN</strong> have been converted to <strong id="EN-US_TOPIC_0000001234200637__b144912336367">EXISTS</strong> and <strong id="EN-US_TOPIC_0000001234200637__b145051835153614">NOT EXISTS</strong>, respectively. The <strong id="EN-US_TOPIC_0000001234200637__b1868199153616">IN</strong> and <strong id="EN-US_TOPIC_0000001234200637__b16442112193612">NOT IN</strong> operators support single or multiple columns. DSC will migrate the <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1083103010455">IN</strong> or <strong id="EN-US_TOPIC_0000001234200637__b7407112114213">NOT IN</strong> statement only when it exists in the <strong id="EN-US_TOPIC_0000001234200637__b1884691463913">WHERE</strong> or <strong id="EN-US_TOPIC_0000001234200637__b1977791763912">ON</strong> clause. The following example shows the conversion from <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1183515815181">IN</strong> to <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b5649151281811">EXISTS</strong>, which is also applicable to the conversion from <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b19603142121813"> NOT IN</strong> to <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1611442681812">NOT EXISTS</strong>.</p>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p51468708115219"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b2316848142221">Simple conversion from IN to EXISTS</strong></p>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p6002796517732">In the following example, the keyword <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b66181881115257">IN</strong> is provided in the input file. During the migration, DSC replaces <strong id="EN-US_TOPIC_0000001234200637__b19495130204614">IN</strong> with <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b7780505115327">EXISTS </strong> to optimize query performance.</p>
<div class="note" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_note1688212401112"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_ul123707018201"><li id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_li7370140172019">The <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b6125141317208">IN</strong> and <strong id="EN-US_TOPIC_0000001234200637__b16212195704619">NOT IN</strong> statements with nested <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b13125151322018">IN </strong> and <strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b16125151318201">NOT IN</strong> keywords cannot be migrated. In this case, the scripts will be invalid after migration.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen48809147437"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">UPDATE</span><span class="w"> </span><span class="n">tab1</span>
<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">123</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="s1">'abc'</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">i</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab2</span><span class="w"> </span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">m</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab3</span>
<span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="p">)</span>
<span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p27321311123720">When a <strong id="EN-US_TOPIC_0000001234200637__b7923112154917">IN</strong> or <strong id="EN-US_TOPIC_0000001234200637__b19548187204912">NOT IN</strong> statement containing subqueries is being migrated, comments between the <strong id="EN-US_TOPIC_0000001234200637__b181171945174914">IN</strong> or <strong id="EN-US_TOPIC_0000001234200637__b11117134514913">NOT IN</strong> operator and the subqueries (see the example) cannot be migrated.</p>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p1058310501919"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1981216531798">Example:</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen2712151181"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">categories</span><span class="w"> </span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">category_name</span>
<span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="c1">--comment </span>
<span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">category_name</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">categories1</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">category_name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
<ul id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_ul15613636152016"><li id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_li4613836132012"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1614313148211">Migrating IN or NOT IN statements whose object names contain $ and #</strong><ul id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_ul203616975314"><li id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_li11341174152312">DSC will not migrate the query if the <strong id="EN-US_TOPIC_0000001234200637__b16546602542">TABLE</strong> name or <strong id="EN-US_TOPIC_0000001234200637__b1315418575420">TABLE ALIAS</strong> starts with <strong id="EN-US_TOPIC_0000001234200637__b9721131605414">$</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen103411241192316"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">Customer_Name</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Customer_t</span><span class="w"> </span><span class="err">$</span><span class="n">A</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Customer_ID</span><span class="w"> </span><span class="k">IN</span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">Customer_ID</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Customer_t</span><span class="w"> </span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
<ul id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_ul10574741175312"><li id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_li6685096244">If the <strong id="EN-US_TOPIC_0000001234200637__b02007524540">COLUMN</strong> name starts with <strong id="EN-US_TOPIC_0000001234200637__b1787516103559">#</strong>, DSC may fail to migrate the query.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen175766415534"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">Customer_Name</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Customer_t</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="o">#</span><span class="n">Customer_ID</span><span class="w"> </span><span class="k">IN</span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">#</span><span class="n">Customer_ID</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Customer_t</span><span class="w"> </span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</li></ul>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p222434152012"></p>
</div></div>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p43638307115434"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b61499203141954">Input: IN</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen65294459115757"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">...</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab1</span><span class="w"> </span><span class="n">t</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">col1</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">icol1</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab2</span><span class="w"> </span><span class="n">e</span><span class="p">)</span>
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">col1</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p25700439115447"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b40035573141956">Output</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen10081266115852"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">...</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab1</span><span class="w"> </span><span class="n">t</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">icol1</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tab2</span><span class="w"> </span><span class="n">e</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">icol1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">col1</span>
<span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">col1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p136014541181"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b8967131617569">Input: IN with multiple columns and Aggregate functions</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen9967121612562"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="p">,</span><span class="w"> </span><span class="n">empno</span><span class="p">,</span><span class="w"> </span><span class="n">salary</span><span class="p">,</span><span class="w"> </span><span class="n">bonus</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp_t</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="p">,</span><span class="w"> </span><span class="k">CAST</span><span class="p">(</span><span class="n">salary</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="k">CAST</span><span class="p">(</span><span class="n">bonus</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="k">MAX</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="n">salary</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="k">CAST</span><span class="p">(</span><span class="n">bonus</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">)))</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp_t</span><span class="w"> </span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">hire_dt</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">CAST</span><span class="p">(</span><span class="w"> </span><span class="s1">'20170101'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="n">FORMAT</span><span class="w"> </span><span class="s1">'YYYYMMDD'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">hire_dt</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_p59707164566"><strong id="EN-US_TOPIC_0000001234200637__en-us_topic_0237712253_b1697017164568">Output</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001234200637__en-us_topic_0238518365_en-us_topic_0237362248_screen10970516115619"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="p">,</span><span class="w"> </span><span class="n">empno</span><span class="p">,</span><span class="w"> </span><span class="n">salary</span><span class="p">,</span><span class="w"> </span><span class="n">bonus</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp_t</span><span class="w"> </span><span class="n">MAlias1</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="k">MAX</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="n">salary</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="k">CAST</span><span class="p">(</span><span class="n">bonus</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">)))</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp_t</span><span class="w"> </span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">hire_dt</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">CAST</span><span class="p">(</span><span class="w"> </span><span class="s1">'20170101'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">DATE</span><span class="p">)</span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">deptno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MAlias1</span><span class="p">.</span><span class="n">deptno</span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">job_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MAlias1</span><span class="p">.</span><span class="n">job_id</span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">deptno</span><span class="p">,</span><span class="w"> </span><span class="n">job_id</span><span class="w"> </span>
<span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="k">MAX</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="n">salary</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="k">CAST</span><span class="p">(</span><span class="n">bonus</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">)))</span>
<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">CAST</span><span class="p">(</span><span class="n">MAlias1</span><span class="p">.</span><span class="n">salary</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="k">CAST</span><span class="p">(</span><span class="n">MAlias1</span><span class="p">.</span><span class="n">bonus</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">hire_dt</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_mt_0044.html">Teradata Syntax Migration</a></div>
</div>
</div>