Вложенные запросы приводят к ошибке «Не удалось связать многоэлементный идентификатор« r.ctripnumber ».» - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть две таблицы, которые я запрашиваю, которые содержат следующие данные:

revenuedtl

ctripnumber   cmethod                   curevenue
-------------------------------------------------
324198        BROKERSANITIZE              65.00
324198        BROKERFUELSURCHARGE        243.35
324198        BROKERBULKWINE             785.00

payrolldtl

ctripnumber      cmethod                   curevenue
------------------------------------------------------
324198           BROKERBULKWINE              628.00
324198           BROKERFUELSURCHARGE         200.96
324198           BROKERSANITIZE               52.00

Я написал следующие запросы, которые суммируют сборы в виде «Итого выручки» и «Итога перевозчика».

Sidenote : мне пришлось написать промежуточные запросы, чтобы преодолетьнекоторые проблемы с дизайном БД, которые создали дубликаты, когда я присоединился к таблицам.Мы должны быть в состоянии игнорировать эту проблему.

select 
    sum(Revenue_Subtotal) as 'Revenue Total' 
from 
    (select 
         r.ctripnumber, r.cmethod, sum(r.curevenue) as Revenue_Subtotal
     from 
         revenuedtl r 
     where 
         r.cmethod in (select distinct r.cmethod from revenuedtl r)
         and r.ctripnumber = '324198'
     group by 
         r.ctripnumber, r.cmethod) A

Результат:

Revenue Total
1093.35

select 
    sum(Carrier_Subtotal) as 'Carrier Total' 
from 
    (select p.ctripnumber, p.cmethod, sum(p.curevenue) as Carrier_Subtotal 
     from payrolldtl p 
     where p.cmethod in (select distinct p.cmethod from payrolldtl p) 
       and p.ctripnumber = '324198'
     group by p.ctripnumber, p.cmethod)B

Результат:

Carrier Total
880.96

Проблема: Я хочу изменить запрос на возвратr.ctripnumber с sum(Revenue_Subtotal) следующим образом:

select
    r.ctripnumber, sum(Revenue_Subtotal) as 'Revenue Total' 
from 
    (select r.ctripnumber, r.cmethod, sum(r.curevenue) as Revenue_Subtotal
     from revenuedtl r 
     where r.cmethod in (select distinct r.cmethod from revenuedtl r)
     --and r.ctripnumber = '324198'
     group by r.ctripnumber, r.cmethod) A

, но я получаю следующую ошибку:

Сообщение 4104, Уровень 16, Состояние 1, Строка 1
Не удалось связать идентификатор из нескольких частей «r.ctripnumber».

1 Ответ

0 голосов
/ 11 декабря 2018

r не является допустимым псевдонимом во внешнем запросе: select r.ctripnumber,sum(Revenue_Subtotal) as 'Revenue Total'

Кстати, единственный псевдоним таблицы, который видит внешний запрос, это A.

, есливы хотите сделать SUM () во внешнем запросе, как вы делаете, вам нужно добавить еще один GROUP BY в контексте внешнего запроса.Но на самом деле я не вижу никакой причины, почему вам вообще нужно использовать внешний / внутренний запрос.Только за код, который вы показали, он ничего не выигрывает.Может быть, это упрощение более крупного запроса, который нуждается в этом?

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