我有一份报告说我正在尝试修复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月数量
答案 0 :(得分:0)
在这一行:AND(app.RECEIVED_DATE BETWEEN '01 -JUN-2013'和'30 -JUN-2013')
我将直接在SSRS中设置参数来处理这个问题,因为这可以更加明确地处理类型的转换,以指定(DateTime)作为参数类型,然后将行更改为:
AND(@Start和@End之间的app.RECEIVED_DATE)
我没有使用SSRS的plsql,但我已经看到了处理WCF和其他频道的类型问题的翻译。我通常的尝试是首先指定一个参数来传递给查询执行,看看是否还有问题。