Home  >  Q&A  >  body text

Compare dates in SQL to rows from the same period last year.

<p>我有一个数据库,其中包含订单日期、产品代码和客户,就像这个例子一样:</p> <table class="s-table"> <thead> <tr> <th style="text-align:center;">Index</th> <th style="text-align:center;">code</th> <th style="text-align:center;">customer</th> <th style="text-align:center;">order_date</th> </tr> </thead> <tbody> <tr> <td style="text-align:center;">1</td> <td style="text-align:center;">CCC</td> <td style="text-align:center;">C</td> <td style="text-align:center;">2018-01-01</td> </tr> <tr> <td style="text-align:center;">2</td> <td style="text-align:center;">AAA</td> <td style="text-align:center;">A</td> <td style="text-align:center;">2020-01-01</td> </tr> <tr> <td style="text-align:center;">3</td> <td style="text-align:center;">CCC</td> <td style="text-align:center;">C</td> <td style="text-align:center;">2021-02-02</td> </tr> <tr> <td style="text-align:center;">4</td> <td style="text-align:center;">CCC</td> <td style="text-align:center;">C</td> <td style="text-align:center;">2021-03-03</td> </tr> <tr> <td style="text-align:center;">5</td> <td style="text-align:center;">DDD</td> <td style="text-align:center;">A</td> <td style="text-align:center;">2022-04-04</td> </tr> <tr> <td style="text-align:center;">6</td> <td style="text-align:center;">FFF</td> <td style="text-align:center;">F</td> <td style="text-align:center;">2023-05-05</td> </tr> <tr> <td style="text-align:center;">7</td> <td style="text-align:center;">FFF</td> <td style="text-align:center;">F</td> <td style="text-align:center;">2023-08-08</td> </tr> </tbody> </table> <p>我需要一个查询来列出所有订单,在订单日期之前的去年中,没有相同产品代码和客户的订单。在这个例子中,期望的输出将是:</p> <table class="s-table"> <thead> <tr> <th style="text-align:center;">Index</th> <th style="text-align:center;">code</th> <th style="text-align:center;">customer</th> <th style="text-align:center;">order_date</th> </tr> </thead> <tbody> <tr> <td style="text-align:center;">1</td> <td style="text-align:center;">CCC</td> <td style="text-align:center;">C</td> <td style="text-align:center;">2018-01-01</td> </tr> <tr> <td style="text-align:center;">2</td> <td style="text-align:center;">AAA</td> <td style="text-align:center;">A</td> <td style="text-align:center;">2020-01-01</td> </tr> <tr> <td style="text-align:center;">3</td> <td style="text-align:center;">CCC</td> <td style="text-align:center;">C</td> <td style="text-align:center;">2021-02-02</td> </tr> <tr> <td style="text-align:center;">5</td> <td style="text-align:center;">DDD</td> <td style="text-align:center;">A</td> <td style="text-align:center;">2022-04-04</td> </tr> <tr> <td style="text-align:center;">6</td> <td style="text-align:center;">FFF</td> <td style="text-align:center;">F</td> <td style="text-align:center;">2023-05-05</td> </tr> </tbody> </table> <p>如果您查看索引号为4和7的行,您会发现在过去的一年中,还有另一行具有相同的代码和客户信息。<br /><br />在MySQL中如何实现这一点呢?</p><p><br /></p>
P粉821231319P粉821231319417 days ago621

reply all(1)I'll reply

  • P粉300541798

    P粉3005417982023-08-03 11:34:19

    You can try querying like this:

    select *,YEAR(order_date) as order_year from YOUR_TABLE group by code,customer,order_year;

    reply
    0
  • Cancelreply