我一直收到错误
Msg 8156,第16级,状态1,第5行为“ sv2017”多次指定了“ Id”列。
Msg 8156,第16级,状态1,第7行为“ sv2010”多次指定了“ Id”列。
使用以下脚本:
select
sv2017.id, sv2017.TotalArea, sv2017.uarn,
sv2010.id, sv2010.PlantMachineryValue, sv2017.PlantMachineryValue,
sv2010.uarn, sv2017.BAReferenceNumber
from
(select *
from summaryvaluation sv
join SummaryValuationPlant svp on sv.id = svp.SummaryValuationId
where sv.yearid = 2
and sv.id in (select id /*Get the most recent valuation for the list year*/
from
(select
id, uarn,
rank() over (partition by uarn order by fromdate desc) as RankOrder
from
summaryvaluation
where
yearid = 2 and systemactive = 1) tbl
where
rankorder = 1)) sv2017
left outer join
(select *
from summaryvaluation sv2
join SummaryValuationPlant svp2 on sv2.id = svp2.SummaryValuationId
where sv2.yearid = 1
and sv2.id in (select id /*Get the most recent valuation for the list year*/
from
(select
id, uarn,
rank() over (partition by uarn order by fromdate desc) as RankOrder
from
summaryvaluation
where
yearid = 1 and systemactive = 1) tbl
where
rankorder = 1)) sv2010 on sv2017.uarn = sv2010.uarn
where
isnull (sv2017.PlantMachineryValue, 0) > isnull(sv2010.PlantMachineryValue, 0)
而且我看不到我要去哪里错了!这可能很明显,我的大脑无法正常工作,但是可以得到任何帮助。
谢谢
您的问题可能在这里:
select *
from summaryvaluation sv
join SummaryValuationPlant svp
该代码出现在2个不同的位置(具有不同的别名)。无论如何,我怀疑两个表都有一个id列,因此当您在派生表中使用此列时,SQL不知道您是从sv表还是从svp表引用那个。
要解决此问题,请删除*并仅列出将在较大查询的其他位置使用的那些列。