SQL проблема - столбец 'Id' был указан несколько раз для 'sv2017' - PullRequest
0 голосов
/ 01 апреля 2020

Я получаю сообщение об ошибке

Сообщение 8156, уровень 16, состояние 1, строка 5
Столбец "Id" был указан несколько раз для "sv2017".

Msg 8156, Уровень 16, Состояние 1, Строка 7
Столбец 'Id' был указан несколько раз для 'sv2010'.

с помощью следующего сценария:

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)

и я не вижу, куда я иду не так! Это, вероятно, очевидно, и мой мозг просто не функционирует, но любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 01 апреля 2020

Ваша проблема, вероятно, здесь:

select * 
     from summaryvaluation sv 
     join SummaryValuationPlant svp 

Этот код появляется в 2 разных местах (с разными псевдонимами). Несмотря на это, я подозреваю, что в обеих таблицах есть столбец идентификатора, поэтому, когда вы используете его в производной таблице, SQL не знает, ссылаетесь ли вы на таблицу из таблицы sv или таблицы svp.

Чтобы исправить эту проблему, удалите * и перечислите только те столбцы, которые вы будете использовать в других местах более крупного запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...