gpt4 book ai didi

oracle - 如何在oracle中获取批量数据?

转载 作者:行者123 更新时间:2023-12-04 01:56:33 26 4
gpt4 key购买 nike

有一个名为 PROFIT 的表,其中包含一家公司的所有利润数据。该表包含超过500万条数据,表结构如下

COMPANYID   YEAR    PROFIT
100001 2017 50000
100001 2016 30000
100001 2015 20000
100002 2017 80000
100002 2016 70000
100002 2015 40000
100003 2016 100000
100003 2015 75000
100004 2017 50000
100004 2016 40000
100004 2015 30000
100004 2014 10000
100004 2013 5000

我有一个包含 75000 个 companyid 的 Excel 列表,我需要获取所有这些公司的数据。我不能使用 IN,因为它一次只允许列表中有 999 个值。

请帮帮我。如何使用单个查询获取所有这些记录?目前我使用的是 Oracle 11g。

最佳答案

假设...

  • 你只想运行一条SQL语句
  • 电子表格只是一个 ID 列表

...你可以准备这样的脚本。

  1. 将 Excel 电子表格保存为 .csv
  2. 在支持正则表达式的文本编辑器中打开.csv文件
  3. 使用正则表达式模式将每个数字转换为一个选择语句:select\1 as co_id from dual union all
  4. 顶部和尾部输出以创建一个 with 子查询
  5. 将其加入您的 PROFIT 表

所以现在你有这样的东西:

with cte as (
select 1 as co_id from dual union all
select 2 as co_id from dual union all
....
select 75000 as co_id from dual
)
select p.companyid
, p.year
, sum(p.profit) as annual_profit -- or whatever
from cte
join profit p
on cte.co_id = p.companyid
group by p.companyid
, p.year

这不是动态解决方案,但静态脚本应该适合一次性练习。如果这是一份定期报告,您应该协商在生产中进行更改的权利,以便您可以支持更好的方法。

关于oracle - 如何在oracle中获取批量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50127032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com