0

我有一份报告,我正在尝试使用 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

所以这个查询将在今年 6 月 1 日到 6 月 30 日之间进行过滤。当我在 plsql 中运行它时,它工作正常,但是一旦我将它放入 ssrs,它就会给我 2012 年和 2011 年的 6 月计数

4

1 回答 1

0

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

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

AND (app.RECEIVED_DATE BETWEEN @Start AND @End)

我没有用 SSRS 玩过 plsql,但我看到了处理 WCF 和其他渠道的类型转换问题。我通常的尝试是先指定一个参数传递给查询执行,看看是否还有问题。

于 2013-07-10T19:02:26.517 回答