Вложенный запрос между --- 1 ---
и --- 2 ---
возвращает одну строку.
Но полный запрос возвращает несколько строк.
Как это возможно?
Это не имеет никакого смысла для меня, я думаю, что мне здесь не хватает чего-то очень тонкого.
select
distinct
ROW_NUMBER() OVER (ORDER BY xx."accountCreateDate" DESC) as "rowNumber",
xx.*
from
(
--- 1 ---
select
some stuff
from
t1
left join t2 on t1.id = t2.id
--- 2 ---
) xx ;
Oracle информация о версии:
Oracle База данных 11g Enterprise Edition, выпуск 11.2.0.2.0 - 64-разрядная версия
PL / SQL Выпуск 11.2.0.2.0 - Производство
"CORE 11.2.0.2.0 Производство"
TNS для Linux: Версия 11.2.0.2.0 - Производство
NLSRTL Версия 11.2.0.2.0 - Производство
ПОЛНЫЙ ЗАПРОС:
select
distinct
ROW_NUMBER() OVER (ORDER BY xx."accountCreateDate" DESC) as "rowNumber",
xx.*
from
(
select
replace(t.company_name,'"', '###') as "companyName",
t.main_email_address as "mainEmailAddress",
t.main_telephone_number as "mainPhoneNumber",
t.xref_id as "businessID",
COALESCE(t.business_record_id, TO_NUMBER(a.ACCOUNT_ID__C)) as "integrationID",
a.id as "sAccountID",
t.d_account_id as "dddAccountID",
t.region_name as "regionName",
t.customer_key as "customerKey",
t.region_key as "regionKey",
t.ACCOUNT_CREATE_DT as "accountCreateDate",
t.ACCOUNT_LAST_UPDATE_DT as "accountLastUpdateDate",
t.INSERT_DATE as "insertDate",
t.LAST_REFRESH_DATE as "lastRefreshDate"
from
CRM_01.STDD_ACCOUNT t
left join SF.Acct_Ids_Account a on t.xref_id = a.business_id_hidden__c
where
(
(1=1)
)
and
(
((t.business_record_id = '14413973') or (a.ACCOUNT_ID__C = '14413973'))
)
) xx ;