获取我指定的范围之外的日期

时间:2013-07-10 18:17:06

标签: sql reporting-services plsql

我有一份报告说我正在尝试修复SSRS,因为当你针对特定范围运行时,比如每年一个月。即使它超出参数范围,它也会给你前几年。

SELECT
     to_char(app.RECEIVED_DATE, 'mm-dd-yyyy') AS received_date
      , res.RESIDENCETYPE_NAME || ' - ' || act.ACTIONTYPE_NAME type
      , sts.APPLSTSTYPE_NAME AS Status
      , COUNT(*) AS Total_Count
      FROM
      ODILIC_ADMIN.LICENSEAPPL app
      , ODILIC_ADMIN.LICENSEDEF def
      , ODILIC_ADMIN.ACTIONTYPE act
      , ODILIC_ADMIN.APPLSOURCE src
      , ODILIC_ADMIN.RESIDENCETYPE res
      , ODILIC_ADMIN.LICENSETYPE ltype
      , ODILIC_ADMIN.LICENSINGENTITYTYPE etype
      , ODILIC_ADMIN.APPLSTSTYPE sts
      WHERE        app.LICENSEDEF_ID = def.LICENSEDEF_ID
      AND app.ACTIONTYPE_ID = act.ACTIONTYPE_ID
      AND app.APPLSOURCE_ID = src.APPLSOURCE_ID
      AND def.RESIDENCETYPE_ID = res.RESIDENCETYPE_ID
      AND def.LICENSETYPE_ID = ltype.LICENSETYPE_ID
      AND def.LICENSINGENTITYTYPE_ID = etype.LICENSINGENTITYTYPE_ID
      AND app.APPLSTSTYPE_ID = sts.APPLSTSTYPE_ID
      AND (app.RECEIVED_DATE BETWEEN  '01-JUN-2013' AND '30-JUN-2013')
        and sts.APPLSTSTYPE_NAME in ('Completed')
      GROUP BY
      to_char(app.RECEIVED_DATE, 'mm-dd-yyyy')
      , res.RESIDENCETYPE_NAME
      , act.ACTIONTYPE_NAME
      , sts.APPLSTSTYPE_NAME
      order by 1

因此,此查询将在今年的1月1日和3月30日之间进行过滤。当我在plsql中运行它时工作正常但是只要我把它放入ssrs它就会给我2012年和2011年的6月数量

1 个答案:

答案 0 :(得分:0)

在这一行:AND(app.RECEIVED_DATE BETWEEN '01 -JUN-2013'和'30 -JUN-2013')

我将直接在SSRS中设置参数来处理这个问题,因为这可以更加明确地处理类型的转换,以指定(DateTime)作为参数类型,然后将行更改为:

AND(@Start和@End之间的app.RECEIVED_DATE)

我没有使用SSRS的plsql,但我已经看到了处理WCF和其他频道的类型问题的翻译。我通常的尝试是首先指定一个参数来传递给查询执行,看看是否还有问题。