2

我知道这个问题之前已经被问过很多次了,但是我在这里看到了所有关于这个问题的讨论,但是没有一个可以帮助我解决我的问题。

所以我的问题是我得到了这个错误。据我了解,此错误是由列无法确定它将从哪个表中提取数据引起的,因此我们可以通过将列名称变量(例如s.sampleid 作为 ssampleid )来解决它。正确的?

这是我的代码

select * from(select S.S_SAMPLEID,s.collectiondt,SDI.PARAMLISTID||'|'||SDI.PARAMID as paramlistparam,s.u_samcondition,SDI.enteredtext,sdi.displayunits As Unit, sd.s_datasetstatus
case when SDIS.condition = 'Pass' then 'Pass'
when SDIS.condition = 'Fail' then 'Fail'
when SDIS.condition = 'Warning' then 'Warning'
when SDIS.waivedflag = 'Y' then 'Waived'
else 'No Spec' end as quality
from s_sample s left join sdidata sd on s.s_sampleid=sd.keyid1 AND SD.SDCID = 'Sample'
LEFT JOIN SDIDATAITEM SDI ON sd.keyid1 = SDI.KEYID1 AND SDI.SDCID = 'Sample' AND SD.PARAMLISTVERSIONID = SDI.PARAMLISTVERSIONID AND SD.VARIANTID = SDI.VARIANTID AND SD.DATASET = SDI.DATASET AND SD.PARAMLISTID = SDI.PARAMLISTID
LEFT JOIN SDIDATAITEMSPEC SDIS ON SDI.KEYID1 = SDIS.KEYID1 AND SDI.PARAMLISTVERSIONID = SDIS.PARAMLISTVERSIONID AND SDI.VARIANTID = SDIS.VARIANTID AND SDI.DATASET = SDIS.DATASET AND SDI.PARAMLISTID = SDIS.PARAMLISTID  AND SDI.PARAMID = SDIS.PARAMID AND SDI.PARAMTYPE = SDIS.PARAMTYPE AND SDIS.SDCID = 'Sample'
where s.samplepointid='"+samplepoint+"' and sdi.paramlistid in ('"+paramlistid+"') and sdi.paramid in ('"+paramid+"') and s.collectiondt between '"+startdt+"' and '"+enddt+"' and sd.s_datasetstatus in ('"+statussql+"') and SDIS.condition in ('"+qualitysql+"'))
pivot(max(enteredtext) as result, max(Unit) as unit for  paramlistparam in ('"+paramlistpa+"')) order by collectiondt

这是我通过为列提供变量所做的

select * from(select s.S_SAMPLEID as ssampleid,s.collectiondt,SDI.PARAMLISTID||'|'||SDI.PARAMID as paramlistparam,s.u_samcondition as scondition,SDI.enteredtext as sdienteredtext,SDI.displayunits As Unit, sd.s_datasetstatus as sddataset
case when SDIS.condition = 'Pass' then 'Pass'
when SDIS.condition = 'Fail' then 'Fail'
when SDIS.condition = 'Warning' then 'Warning'
when SDIS.waivedflag = 'Y' then 'Waived'
else 'No Spec' end as quality
from s_sample s left join sdidata sd on s.s_sampleid=sd.keyid1 AND SD.SDCID = 'Sample'
LEFT JOIN SDIDATAITEM SDI ON sd.keyid1 = SDI.KEYID1 AND SDI.SDCID = 'Sample' AND SD.PARAMLISTVERSIONID = SDI.PARAMLISTVERSIONID AND SD.VARIANTID = SDI.VARIANTID AND SD.DATASET = SDI.DATASET AND SD.PARAMLISTID = SDI.PARAMLISTID
LEFT JOIN SDIDATAITEMSPEC SDIS ON SDI.KEYID1 = SDIS.KEYID1 AND SDI.PARAMLISTVERSIONID = SDIS.PARAMLISTVERSIONID AND SDI.VARIANTID = SDIS.VARIANTID AND SDI.DATASET = SDIS.DATASET AND SDI.PARAMLISTID = SDIS.PARAMLISTID  AND SDI.PARAMID = SDIS.PARAMID AND SDI.PARAMTYPE = SDIS.PARAMTYPE AND SDIS.SDCID = 'Sample'
where s.samplepointid='"+samplepoint+"' and sdi.paramlistid in ('"+paramlistid+"') and sdi.paramid in ('"+paramid+"') and s.collectiondt between '"+startdt+"' and '"+enddt+"' and sd.s_datasetstatus in ('"+statussql+"') and SDIS.condition in ('"+qualitysql+"')
or s.samplepointid='"+samplepoint+"' and sdi.paramlistid in ('"+paramlistid+"') and sdi.paramid in ('"+paramid+"') and s.collectiondt between '"+startdt+"' and '"+enddt+"' and sd.s_datasetstatus in ('"+statussql+"') and SDIS.condition is null)
pivot(max(sdienteredtext) as result, max(Unit) as unit for  paramlistparam in ('"+paramlistpa+"')) order by collectiondt

根据我的测试,错误是由paramlistpa引起的

4

0 回答 0