当复合主键不在两个语句中时,是否可以连接两个select语句

问题描述 投票:-1回答:1

我需要一些建议。

我在连接两个表时遇到问题。

示例:所有者拥有五件式复合钥匙位置有六把组合键

所有者表具有As_Of_Date(密钥),PORT_CD(密钥),Deal_Or_Schedule(密钥),Deal_Sched_No(密钥),owner_port_cd(密钥),百分比

位置表有As_Of_Date(密钥),PORT_CD(密钥),Deal_Or_Schedule(密钥),Deal_Sched_No(密钥),Book_CD_Nme(密钥),Positn_Num(密钥)

您可以看到所有者中有4个条件匹配,可以加入表2,但是Onwer_port_cd不在位置中,因此无法加入。

我需要从两个表中获取一个表,以便将收入映射到其所有者。

目前,我的加入产生了笛卡尔积,因为它没有考虑所有限定词。

sql sql-server select inner-join composite-primary-key
1个回答
0
投票

尝试一下:

SELECT *
FROM JUNE_INCOME JI
JOIN CHART_OF_ACCOUNTS CA
ON JUNE_INCOME.GL_ACCT_NO = CHART_OF_ACCOUNTS.GL_ACCT_NO
JOIN SECURITY_MASTER SM
ON JUNE_INCOME.INS_NO = SECURITY_MASTER.INS_NO
JOIN POSITION_ALLOCATION PA
ON JUNE_INCOME.TRADE_DT = POSITION_ALLOCATION.AS_OF_DATE
AND JUNE_INCOME.PORT_CD = POSITION_ALLOCATION.PORT_CD
AND JUNE_INCOME.BOOK_CD_NME = POSITION_ALLOCATION.BOOK_CD_NME
AND JUNE_INCOME.POSITN_NUM = POSITION_ALLOCATION.POSITN_NUM
JOIN POSITIONS PO
ON JUNE_INCOME.PORT_CD = POSITIONS.PORT_CD
AND JUNE_INCOME.BOOK_CD_NME = POSITIONS.BOOK_CD_NME
AND JUNE_INCOME.POSITN_NUM = POSITIONS.POSITN_NUM
JOIN OWNERSHIP OW
ON PA.AS_OF_DATE=OW.AS_OF_DATE
AND PA.PORT_CD=OW.PORT_CD
AND PA.DEAL_OR_SCHEDULE=OW.DEAL_OR_SCHEDULE
AND PA.DEAL_SCHED_NO=OW.DEAL_SCHED_NO
JOIN OWNERS 
ON OWNERSHIP.OWNER_PORT_CD = OWNERS.OWNER_PORT_CD

请确保在问题中添加输入和预期输出。另外,请使用别名以避免每次都写全名。

© www.soinside.com 2019 - 2024. All rights reserved.