我正在对子查询中的另一个表进行左连接,而我想从左连接返回的佣金列仅为整个佣金列带来一个值,这是错误的(请参阅下面的第一个查询结果)。现在,如果我在表A之外进行左联接(查询2),那么我将获得所需的结果(请参阅第二个结果集)。问题是为什么左联接在第一个查询中的表A中不起作用。
我尝试了在子查询/表A(查询2)之外进行左联接,它工作正常,但我想了解为什么左联接在表A中不起作用。
下面的查询(查询1)在佣金列中给出重复的值
Position_A1 table
Sector Short_Side
------------------------
Engineering -2
Financial -5
Industry -10
Corporate -36
Energy -52
Financial -26
Order table
Sector Commission
------------------------
Engineering 10
Financial 100
Industry 36
Corporate 91
Energy 10
Financial 25
查询1
SELECT *
FROM
(SELECT POS.SECTOR,SUM(ABS(POS.SHORT_SIDE)) AS Short_Expo,COM.COMMISSION
FROM Position_A1 POS
LEFT JOIN (SELECT SECTOR,sum(COMMISSION) AS COMMISSION
FROM ORDER
WHERE TRADE_DATE = TO_DATE('2019-11-01','YYYY-MM-DD')
GROUP BY SECTOR
)COM
ON POS.SECTOR = COM.SECTOR
WHERE TRADE_DATE = TO_DATE('2019-11-01','YYYY-MM-DD')
GROUP BY SECTOR ) A
但是,如果我尝试以下操作,我会在“佣金”列中获得正确的结果。
查询2
SELECT A.*,COM.COMMISSION
FROM
(SELECT POS.SECTOR,SUM(ABS(POS.SHORT_SIDE)) AS Short_Expo
FROM Position_A1 POS
WHERE TRADE_DATE = TO_DATE('2019-11-01','YYYY-MM-DD')
GROUP BY SECTOR ) A
LEFT JOIN (SELECT SECTOR,'YYYY-MM-DD')
GROUP BY SECTOR
)COM
ON POS.SECTOR = COM.SECTOR
根据第一个查询,我得到的结果是:
Sector Short_Expo Commission
Energy 256 125
Industry 236 125
Financial 125 125
根据第二个查询,我得到的结果(正确)是:
Sector Short_Expo Commission
Energy 256 128
Industry 236 325
Financial 125 186
问题是为什么查询中的查询结果不理想,而查询2中的查询结果却理想。为什么在第一个查询中会导致重复的佣金呢?
使用第一个似乎所有部门都只返回一个部门(金融)的佣金。