столбец не существует в derived_table1 после соединения sql

#sql #join #amazon-redshift

Вопрос:

Я написал этот sql-код для запроса данных в redshift

 Select
  tenant_name, date, fk_organization_unit, active_member_per_studio, cn
From
(
  SELECT
    tenant_name, date, fk_organization_unit, active_member_per_studio
  from
    fct.st_member_development as st_member_development
  inner join
  (
    SELECT
      tenant_name as tn, fk_organization_unit as fk, type, date as dt, contract_count as cn
    from
      fct.st_contract_development
  )
    u
      on  st_member_development.tenant_name =u.tn
      and st_member_development.fk_organization_unit =u.fk
      and st_member_development.date =u.dt
)
  x
limit 5
 

Я получил следующую ошибку
ОШИБКА: столбец «cn» не существует в derived_table1

как я мог бы это исправить, пожалуйста

Комментарии:

1. Я отредактировал ваш вопрос, чтобы использовать более читаемый макет. Используя отступы (в самом начале), это становится очень понятным. u имеет столбец с именем, cn , но x не выбирает его, поэтому, конечно, внешний запрос не может его увидеть.

Ответ №1:

Вы получаете эту ошибку, потому cn что во втором столбце отсутствует SELECT столбец . Попробуйте это:

 Select tenant_name, date, fk_organization_unit, active_member_per_studio, cn

From (
SELECT tenant_name, date, fk_organization_unit, active_member_per_studio, cn   
from fct.st_member_development as st_member_development

inner join
(SELECT tenant_name as tn, fk_organization_unit as fk, type, date as dt, contract_count as cn from fct.st_contract_development) u
on  st_member_development.tenant_name =u.tn and st_member_development.fk_organization_unit =u.fk and st_member_development.date =u.dt
)
limit 5
 

Ответ №2:

Вы пропустили столбец cn во внутреннем запросе.

 Select
  tenant_name, date, fk_organization_unit, active_member_per_studio, cn
From
(
  SELECT
    tenant_name, date, fk_organization_unit, active_member_per_studio, cn
  from
    fct.st_member_development as st_member_development
  inner join
  (
    SELECT
      tenant_name as tn, fk_organization_unit as fk, type, date as dt, contract_count as cn
    from
      fct.st_contract_development
  )
    u
      on  st_member_development.tenant_name =u.tn
      and st_member_development.fk_organization_unit =u.fk
      and st_member_development.date =u.dt
)
  x
limit 5
 

Комментарии:

1. Помимо внесения изменений в форматирование, которые я внес, это не делает ничего такого, что делает предыдущий ответ. На самом деле, предыдущий ответ фактически объясняет, в чем проблема, а ответ-нет.

2. @MatBailie извините, мое окно было открыто несколько раз. Так что к тому времени был дан еще один ответ. Я не эксперт по красному смещению, но в этом ответе отсутствуют псевдонимы для подзапросов. Все в порядке? Тогда я должен удалить свой ответ.