Sql 使用解码功能

Sql 使用解码功能,sql,oracle,decode,Sql,Oracle,Decode,有人能帮我输入下面的代码吗。我正在尝试执行下面概述的任务。是否可以使用参数进行解码 解码(:开始日期,空,a.issue\u日期>=(trunc(trunc(sysdate,'MONTH')-1,'MONTH')),a.issue\u日期>=:开始日期) 解码(:END_DATE,NULL,a.issue_DATE这就是你想要做的吗?希望这能有所帮助 select * from <table> a where a.issue_date between DECODE (:START_D

有人能帮我输入下面的代码吗。我正在尝试执行下面概述的任务。是否可以使用参数进行解码

解码(:开始日期,空,a.issue\u日期>=(trunc(trunc(sysdate,'MONTH')-1,'MONTH')),a.issue\u日期>=:开始日期)
解码(:END_DATE,NULL,a.issue_DATE这就是你想要做的吗?希望这能有所帮助

select *
from <table> a
where a.issue_date between DECODE (:START_DATE, NULL, (trunc(trunc(sysdate,'MONTH')-1,'MONTH')), :START_DATE) 
and DECODE (:END_DATE, NULL,  (trunc(sysdate,'MONTH')-1), :END_DATE)
选择*
从
其中a.issue\u DECODE之间的日期(:START\u date,NULL,(trunc(trunc(sysdate,'MONTH')-1,'MONTH'),:START\u date)
并解码(:END_DATE,NULL,(trunc(sysdate,'MONTH')-1),:END_DATE)

我不认为解码在这方面对你有帮助。它是有效的,但在我看来,它使代码更难阅读。我认为这是你的两个条件。(1)与用户输入相比,发布日期。(2)如果用户输入值均为空,则将其与上个月初和月末的日期值进行比较。此外,使用解码可能会使其无法使用,因此如果在发行日有索引,则可能无法使用该索引

select *
from   table a
where  (a.issue_date >= :START_DATE and a.issue_date <= :END_DATE)
   OR  (:START_DATE is null AND :END_DATE IS NULL 
        AND a.issue_date >= TRUNC(ADD_MONTHS(SYSDATE,-1),'MONTH') AND a.issue_date < TRUNC(SYSDATE,'MONTH')
选择*
从表a
其中(a.issue_date>=:开始日期和a.issue_date=TRUNC(添加月份(SYSDATE,-1),'MONTH')和a.issue_date
什么是“下面概述的任务”正在尝试执行此操作?我有两个参数称为开始日期和结束日期。我希望用户输入开始日期和结束日期,以便在输入的这两个参数之间显示日期数据。此外,当参数保留为空时,我希望显示的日期信息为上个月的日期信息(即上个月的第一天和最后一天)我正在使用Oracle SQL