帮我把这段SQL从(+)写法修改为left join写法: SELECT temp.segment8, aia.* FROM ap_invoices_all aia, (SELECT aid.invoice_id, gcc.segment8, row_number() over(PARTITION BY aid.invoice_id, gcc.segment8 ORDER BY aid.invoice_id) row_num FROM ap_invoice_distributions_all aid, gl_code_combinations gcc WHERE gcc.code_combination_id = aid.dist_code_combination_id) temp WHERE aia.invoice_num = 'CBS202305041001' AND aia.invoice_id = temp.invoice_id(+) AND temp.row_num(+) = 1
时间: 2024-04-19 18:26:54 浏览: 24
当将(+)写法修改为left join写法时,我们需要将原始查询中的两个关联条件进行修改。下面是修改后的SQL查询:
SELECT temp.segment8, aia.*
FROM ap_invoices_all aia
LEFT JOIN
(SELECT aid.invoice_id,
gcc.segment8,
row_number() over(PARTITION BY aid.invoice_id, gcc.segment8 ORDER BY aid.invoice_id) row_num
FROM ap_invoice_distributions_all aid
INNER JOIN gl_code_combinations gcc ON gcc.code_combination_id = aid.dist_code_combination_id) temp
ON aia.invoice_id = temp.invoice_id AND temp.row_num = 1
WHERE aia.invoice_num = 'CBS202305041001'
相关问题
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_10US MODULE: LCD1602.obj (LCD1602) *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_MS MODULE: LCD1602.obj (LCD1602) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY_10US?MAIN
这些错误是由于在 LCD1602.obj 模块中有多个公共定义的符号 _DELAY_10US 和 _DELAY_MS 导致的。这可能是由于重复的定义或者不正确的模块导入引起的。而警告 L16 表示未被调用的段被忽略,这意味着该段的代码没有被执行。
要解决这些错误,你可以检查 LCD1602.obj 模块中是否存在重复的定义,确保每个符号只有一个定义。另外,还要确保正确导入模块并正确引用符号。
如果你能提供更多关于你的项目和代码的细节,我可以给出更具体的帮助。
Build target '目标 1' compiling LCD1602.c... linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_10US MODULE: LCD1602.obj (LCD1602) *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_MS MODULE: LCD1602.obj (LCD1602) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY_10US?MAIN Program Size: data=13.1 xdata=0 code=600 目标未创建
这个错误是由于在链接过程中,编译器发现了多个公共定义的符号"_DELAY_10US"和"_DELAY_MS",这通常是由于多个源文件包含了同样的定义所致。为了解决这个问题,你可以检查你的代码,确保只有一个定义了这些符号。你可以尝试以下几种方法来修复这个错误:
1. 在LCD1602.c文件中检查是否有重复的定义。确保只有一处定义了"_DELAY_10US"和"_DELAY_MS"。
2. 检查是否有其他文件包含了LCD1602.c文件。如果有其他文件包含了同样的代码,那么可能会导致重复定义的错误。可以尝试将重复包含的文件移除或者仅在需要的地方包含。
3. 如果你使用了库文件,检查是否正确地链接了库文件。如果库文件中也定义了"_DELAY_10US"和"_DELAY_MS",则可能会引发重复定义的错误。请确保正确地链接库文件。
4. 如果以上方法都没有解决问题,你可以尝试给重复定义的符号添加static关键字,将其限定在当前文件内部。例如,在LCD1602.c文件中将"_DELAY_10US"和"_DELAY_MS"定义改为static。
希望这些解决方法可以帮助你解决问题。如果还有其他问题,请随时提问。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)