0
我是新来的Oracle子查询,我碰到这样的子查询:表名的子查询后,JOIN
select CUSTOMER.CUSTOMER_ID, CUSTOMER.CUSTOMER_RCE_ID, CUSTOMER.COMM_REGNUM_CUST,CUSTOMER.GROUP_CODE, CUSTOMER.CUSTOMER_CORPORATE_NAME,
Replace(CUSTOMER.ADDRESS_COMPANY, '|', ', ') as ADDRESS_COMPANY, CUSTOMER.COUNTRY_CODE, CUSTOMER.POST_CODE, CUSTOMER.CITY, CUSTOMER.CUSTOMER_ATTRIBUTE1,
CUSTOMER.CUSTOMER_ATTRIBUTE2, CUSTOMER.CUSTOMER_ATTRIBUTE3, CUSTOMER.CUSTOMER_ATTRIBUTE4, CUSTOMER.CUSTOMER_ATTRIBUTE5,
CUSTOMER.CREATED_DATE, CUSTOMER.CREATED_BY,CUSTOMER.UPDATED_DATE, CUSTOMER.UPDATED_BY, CUSTOMER.TENANT_ID,
CUSTOMER.CUSTOMER_ACCOUNT, CUSTOMER.VAT_INTRA, CUSTOMER.VAT_SETTLEMENT,CUSTOMER.IS_HEADQUARTERS, CUSTOMER.CUSTOMER_SAP_ID,
CUSTOMER.ADDRESSGUID, CUSTOMER.SIREN_CORP, CUSTOMER.COMMERCIAL_SEGMENT, CUSTOMER.CODE_NAF, CUSTOMER.JUR_STATUS_COMP,
CUSTOMER.SHARE_CAP_AMT,CUSTOMER.IS_ACTIVE_RCE, CUSTOMER.REGISTRATION_PLACE,STATUS.STATUS_NAME ,
CUSTOMER.RCE_ETAB_ID, REPLACE (CUSTOMER.COMM_REGNUM_CUST,' ','') AS SIRET from CUSTOMER
join CUSTOMER_STATUS on CUSTOMER_STATUS.CUSTOMER_STATUS_ID = (
select * from (select CUSTOMER_STATUS_ID from CUSTOMER_STATUS
where CUSTOMER.CUSTOMER_ID = CUSTOMER_STATUS.CUSTOMER_ID order by CUSTOMER_STATUS.UPDATED_DATE desc) CUSTOMER_STATUS where rownum = 1)
我不明白这个部分:
select * from (select CUSTOMER_STATUS_ID from CUSTOMER_STATUS
where CUSTOMER.CUSTOMER_ID = CUSTOMER_STATUS.CUSTOMER_ID order by CUSTOMER_STATUS.UPDATED_DATE desc) CUSTOMER_STATUS where rownum = 1
如何在子查询后放置CUSTOMER_STATUS?为什么?
在此先感谢。
Customer_Status是一个表别名。每个内嵌视图应该包含一个别名,以便如果查询中的列与其他表中的列命名相同,则引擎可以区分列。在这种情况下,它与连接中的表名称相同,我认为使用与表相同的别名是不好的,但由于它在子查询中处于不同级别,所以两者不会发生冲突。 – xQbert
在这种情况下有点令人困惑,因为表别名从来没有被实际使用过。它可以被删除,查询将正常工作。 – kfinity
我有点困惑,customer_Status似乎没有别名,因为状态在选择Status.status_name中被尊崇,但也许有一张名为状态的表... – xQbert