我在SSRS中運行以下查詢。如果我爲這兩個參數添加聲明,它在SQL管理控制檯中運行正常。如何列出來自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)
然而,當我插上這對SSRS,它不註冊,有可用於報告的任何領域。我如何說服SSRS確實有合適的領域?謝謝。
編輯:我剛剛宣佈在查詢的參數,它認識的字段名。
declare @DateYearStart datetime
declare @DateQuarterEnd datetime
set @DateYearStart = '2011-07-01'
set @DateQuarterEnd = '2012-03-31'
當然,那出錯的,因爲我聲明參數兩次,一次是作爲查詢參數,一次查詢中。但是,一旦我注意到上面的線條,我就再次失去了原野。
正如我所說,當我聲明參數和爲他們提供的值,查詢工作正常。當我將報告中的參數傳遞給數據集時,它看不到字段。但是,當我將計算字段添加到數據集時,我可以看到它正在返回正確數量的記錄,儘管我無法說服它向我顯示我想看到的字段。 – SarekOfVulcan
我現在看到了。是的,它確實不會生成這些字段。你有沒有嘗試存儲過程的想法? – Diego
還沒有。我可能不得不採取這種解決方案,但是這份報告違背了第三方應用程序,並且儘可能少地混淆了數據定義。 (學習這一課時,當我建立的Oracle物化視圖失控時,每次數據更新時都開始重建,而不是每天晚上兩點...) – SarekOfVulcan