Sql查询生成

Sql查询生成,sql,Sql,你能帮我回答下面的问题吗 我通过连接两个三表查询了一个结果集,如下所示 我的要求是获得20170701之后和20170701之前的两个日期 例如,456账户的日期分录为20160625、20160725、20160825、20160925、20170725、20170825、20170925 但是结果应该是2个条目2个条目 附加的屏幕截图,例如,绿色的行应该出现在最终结果中 请帮助您可以按如下方式使用总和分析功能: Select * from (Select t.*, Sum(ca

你能帮我回答下面的问题吗

我通过连接两个三表查询了一个结果集,如下所示

我的要求是获得20170701之后和20170701之前的两个日期

例如,456账户的日期分录为20160625、20160725、20160825、20160925、20170725、20170825、20170925

但是结果应该是2个条目<20170701>2个条目

附加的屏幕截图,例如,绿色的行应该出现在最终结果中

请帮助

您可以按如下方式使用总和分析功能:

Select * from
(Select t.*,
       Sum(case when date > 20200701 then 1 end) 
          over (partition by account order by date) as sm_i,
       Sum(case when date < 20200701 then 1 end) 
          over (partition by account order by date desc) as sm_d
  From your_table t) t
 Where sm_i between 1 and 2 or sm_d between 1 and 2

请您添加您编写的产生错误结果的代码,好吗?请不要将数据或代码作为图像发布,而是作为文本发布。使用cte作为我的选择查询,使用JOIN select cte.*从select cte.*中选择cte.*,按ac_编号对分区进行排名,如果tran_date>20170701,则按ac_编号结束订单,cte的交易日期为seqnum,但它给出了所有数据的编号,例如20170216-1 20170302-2 20170402-3。20170706-1 20170720-2但我只需要最后两个条目,也需要紧接着20170701之前的条目,所以,如果有以下条目20170602 20170502 20170402 20170302,那么我这里只需要最接近20170701但不超过20170701的20170602和20170502!!!!非常感谢@Popeye。。。我正在全面测试查询,并会让您知道。。。再次感谢