使用where子句

时间:2019-01-18 11:58:54

标签: tsql reporting-services

我有一个TSQL查询,该查询在通过SSMS执行时有效,但是在SSRS数据集中使用相同的查询时,不会产生任何结果。

我删除了TSQL语句中的where子句,然后在ssrs报告中显示了结果,但是我需要TSQL语句中的where线索来产生输出。

我已使用cast / convert / int / varchar / date更改了where子句数据类型,但没有成功。

有人有解决方案吗?

尽管我尝试在SSRS报告本身中进行过滤,但该过滤方法也无法正常工作,但我不想使用此技术,结果将输出到csv中。

感谢任何想法,想法和解决方案-预先感谢。

更新:该报告没有任何参数,并且设计为在订阅运行时根据以下sql的内容删除一个csv;

    select TenancyRef, FullName, Telephone1, Telephone2,convert(varchar    (2),weekucpayday) wkpayday, substring(convert(varchar,getdate(),103),1,2) daypayday  --,Currentdate, paydate,  

    from (

    SELECT   CAST(RTRIM(ZZ.propref) AS nvarchar) + CAST(RTRIM(ZZ.tensuffix) AS nvarchar) + CAST(RTRIM(ZZ.checkdigit) AS nvarchar) AS TenancyRef, RTRIM(ZZ.perstitle) + ' ' + RTRIM(ZZ.perfnames) 
                         + ' ' + RTRIM(ZZ.persname) AS FullName, 
                         ZZ.Mobile_Number AS Telephone1, 
                         ZZ.Home_Number AS Telephone2, 
                         ZZ.tenind AS Status, 
                         ZZ.ArrearsBalance, 
                         a.ucdaycode, 
                         ZZ.tenaltkey,
                         cast(cast(a.ucdaycode as varchar)  +'/' + cast(month(GETDATE()) as varchar) +'/' + cast(YEAR(GETDATE()) as varchar ) as date) as paydate,
datename(dw,convert(date,(cast(a.ucdaycode as varchar)  +'/' + cast(month(GETDATE()) as varchar) +'/' + cast(YEAR(GETDATE()) as varchar )),103)) payday,

    datepart(dd,(case when datepart(dw,cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)) as date)) = 6 then
    cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -2)) as date)
    when datepart(dw,cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)) as date)) = 7 then
    cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -3)) as date) 
    else cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)) as date)
    end)) as weekucpayday, 

    cast(DATEADD(dd, a.ucdaycode, DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)) as date) AS ucpayday
, convert(nvarchar,GETDATE(),1) Currentdate
FROM            [ucdetail                         ] AS a INNER JOIN
                             (SELECT        Z.propref, Z.tensuffix, Z.checkdigit, Z.tenind, Z.tenaltkey, Z.ArrearsBalance, Z.paymthdcode, T3.perstitle, T3.perfnames, T3.persname, T1.contdetails AS Mobile_Number, 
                                                         T2.contdetails AS Home_Number
                               FROM            (SELECT        T.propref, T.tensuffix, T.tenaltkey, T.tenind, T.checkdigit, occupancy.relncode, occupancy.occend, occupancy.perref AS OccPerref, T.tenarrsbal AS ArrearsBalance, T.paymthdcode
                                                         FROM            tenancy AS T LEFT OUTER JOIN
                                                                                   occupancy ON T.tenaltkey = occupancy.tenaltkey
                                                         WHERE        (occupancy.relncode = 'T1') AND (GETDATE() < occupancy.occend) OR
                                                                                   (occupancy.relncode = 'T1') AND (occupancy.occend IS NULL)) AS Z LEFT OUTER JOIN
                                                             (SELECT        perref, contdetails
                                                               FROM            [contdetails                     ] AS C1
                                                               WHERE        (UPPER(commtype) = 'T') AND (UPPER(commdesccode) = 'MOB') AND (UPPER(activeind) = 'Y') AND (UPPER(preferred) = 'Y')) AS T1 ON Z.OccPerref = T1.perref LEFT OUTER JOIN
                                                             (SELECT        perref, contdetails
                                                               FROM            [contdetails                     ] AS C2
                                                               WHERE        (UPPER(commtype) = 'T') AND (UPPER(commdesccode) = 'HOME') AND (UPPER(activeind) = 'Y') AND (UPPER(preferred) = 'Y')) AS T2 ON Z.OccPerref = T2.perref LEFT OUTER JOIN
                                                             (SELECT        perstitle, perfnames, persname, perref
                                                               FROM            person) AS T3 ON Z.OccPerref = T3.perref) AS ZZ ON a.tenaltkey = ZZ.tenaltkey 
WHERE   ZZ.tenaltkey not in (select postref from tranmisc where tranmisc.acctcode = 'ATBEN') and  ZZ.paymthdcode != 'DD' and    (ZZ.Mobile_Number IS NOT NULL OR
                         ZZ.Home_Number IS NOT NULL) AND (a.status = 'Active') AND (ZZ.tenind = 'C') AND (a.ucdaycode <> 0) --AND (a.ucdaycode = DATEPART(dd, GETDATE())) 

) AS UC where convert(int,UC.weekucpayday) = convert(int,(DATEPART(dd,getdate()))) 

0 个答案:

没有答案
相关问题