我有各种大型视图/存储过程,它们基本上将大量数据生成到 Excel 电子表格中。存在一个问题,并非所有公司金额都没有流过。我将其缩小为存储过程中的一段代码:(注意,为简单起见,已将其缩减)
LEFT OUTER JOIN view_creditrating internal_creditrating
ON creditparty.creditparty =
internalrating.company
LEFT OUTER JOIN (SELECT company, contract, SUM(amount) amount
FROM COMMON_OBJ.amount
WHERE status = 'Active'
GROUP BY company, contract) col
ON vd.contract = col.contract
有问题的表:
company | contract | amount |
| | |
TVC | NULL | 1006 |
KS | 10070 | -2345 |
NYC-G | 10060 | 334000 |
NYC-G | 100216 | 4000 |
UECR | NULL | 0 |
SP | 10090 | 84356 |
基本上一些合同是空的。因此,当合同中有 LEFT OUTER JOIN 时,合同中的空值会退出并且不会流过……所以我决定根据公司来做。这也会导致问题,因为 company 不止一次出现在表中以显示不同的合同。通过此更改,查询变得模棱两可,因为它不知道我是想要合同 10060 的金额还是合同 100216 的金额,而且通常它给我的金额不正确。我考虑过将最后的 ON 子句保留为 company = company。这导致的问题最少......然后不知何故直接查询每个单元格值,因为它只影响几个单元格,所以会不一致。尽管我已经搜索过,但我认为这是不可能的。这可能吗??或者是否有另一种方法可以在数据库端解决这个问题?