Sar*_*can 7 t-sql sql-server reporting-services ssrs-2008
我在SSRS中运行以下查询.如果我为这两个参数添加声明,它在SQL管理控制台中运行正常.
declare @EMRQuery varchar(max)
declare @CPSQuery varchar(max)
set @EMRQuery = 'select Person.ExternalId
from ml.Person
join ml.Obs on Person.pId = Obs.pId
join ml.ObsHead on Obs.hdId = ObsHead.hdId
where ObsHead.name = ''SCHOOLREGDTE''
and Obs.xId = 1.e+035
and Obs.change = 2
and Obs.obsDate >= to_date('''
+ convert(varchar(30), @DateYearStart, 120)
+ ''', ''YYYY-MM-DD HH24:MI:SS'')
and Obs.obsDate < to_date('''
+ convert(varchar(30), @DateQuarterEnd, 120)
+ ''', ''YYYY-MM-DD HH24:MI:SS'')'
set @CPSQuery = 'select ic.ListName, count(distinct pp.patientprofileid) as PatCount
from PatientProfile pp
left join PatientInsurance pi on pp.PatientProfileId = pi.PatientProfileId
and pi.OrderForClaims = 1
and pi.Inactive <> 1
left join InsuranceCarriers ic on pi.InsuranceCarriersId = ic.InsuranceCarriersId
join OpenQuery(EMR_LIVE
, ''' + replace(@EMRQuery, '''', '''''') +
''' ) Students on pp.PatientId = Students.ExternalId
group by ic.ListName '
exec(@CPSQuery)
Run Code Online (Sandbox Code Playgroud)
但是,当我将其插入SSRS时,它不会注册有任何可用于报告的字段.我如何说服SSRS我确实有字段可以使用?谢谢.
编辑:我刚刚在查询中声明了参数,并识别了字段名称.
declare @DateYearStart datetime
declare @DateQuarterEnd datetime
set @DateYearStart = '2011-07-01'
set @DateQuarterEnd = '2012-03-31'
Run Code Online (Sandbox Code Playgroud)
当然,这是错误的,因为我将参数声明两次,一次作为查询参数,一次在查询中.但是,一旦我评论出上面的线条,我就再次丢失了这些字段.
MSDN 论坛上的某人建议我选择临时表,因此我将最终的 exec 语句替换为
declare @CarrierList table (Listname varchar(200), PatCount int);
insert @CarrierList exec(@CPSQuery)
select * from @CarrierList
Run Code Online (Sandbox Code Playgroud)
现在似乎运行良好。