在 XMLAGG 中对重复记录使用不同值

2024-02-24

我在 sql 中使用 XMLAGG 时遇到问题。

我有一个包含多个可以重复的记录的表。该表包含客户地址和客户名称。

Create Table cust_data(
    cust_name varchar2(30),
    cust_addr_line1 varchar2(300),
    cust_addr_line2 varchar2(300),
    cust_addr_line3 varchar2(300),
    cust_addr_type varchar2(3));

该表可能包含单个客户名称和不同地址类型的多个记录。

此外,单个客户也可能有多个相同类型的地址。

所以客户可能有这样的地址

cust1 address1 curr_address
cust1 address2 old_address
cust1 address3 old_address
cust1 address4 old_address
cust2 address5 curr_address
cust2 address6 old_address

我有一个选择,我想在其中以逗号分隔的格式取出所有带有 old_addresses 的客户名称。

使用相同的方法我使用了以下sql

 select XMLAGG(XMLELEMENT(E, cust_name || ',')).EXTRACT('//text()')
 from cust_data where cust_addr_type ='old_address';

我得到以下输出:

客户 1,客户 1,客户 1,客户 2,

如何获得输出

客户1,客户2

请帮忙。

Edit#1:

其他表可以这样取:

Create Table cust_info(
    cust_name varchar2(30),
    Cust_account varchar2(300),
    cust_amount_paid varchar2(300),
    cust_amount_pend varchar2(300),
    cust_payment_type varchar2(300));

Create Table payment_master_info(
    pmnt_type varchar2(30),
    pmnt_desc varchar2(300),
    pmnt_rate varchar2(300),
    pmnt_tenure varchar2(300));

查询是这样的:

SELECT XMLAGG(XMLELEMENT(E, CUST_NAME || ',')) .EXTRACT('//text()'),
             CD.CUST_ADDR_LINE1,
             CD.CUST_ADDR_LINE2,
             CD.CUST_ADDR_LINE3,
             CI.CUST_AMOUNT_PAID,
             CI.CUST_AMOUNT_PEND,
             CI.CUST_ACCOUNT
    FROM CUST_INFO CI, PAYMENT_MASTER_INFO PM, CUST_DATA CD
 WHERE CD.CUST_NAME = CI.CUST_NAME
     AND CI.CUST_PAYMENT_TYPE = PM.PMNT_TYPE
     AND CUST_ADDR_TYPE = 'old_address';

现在数据就这么庞大。 pmnt_type中的数据范围为10000-15000个数据 在其他表中,范围为 2100000-5000000

如果我对不同的数据应用内部查询,性能会呈指数下降。

还有其他办法吗?

编辑#2:此外,在使用此内部查询时,在执行过程中,我收到 ORA-19011(:字符串缓冲区太小。)错误。有什么原因吗......?


您可以在内部查询中使用 DISTINCT:

SQL> select XMLAGG(XMLELEMENT(E, cust_name || ',')).EXTRACT('//text()')
  2   from (SELECT distinct cust_name, cust_addr_type FROM cust_data)
  3  where cust_addr_type ='old_address';

XMLAGG(XMLELEMENT
-----------------
cust1,cust2,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XMLAGG 中对重复记录使用不同值 的相关文章

随机推荐

  • Jupyter 编辑模式下是否有删除行的快捷方式?

    In Jupyter s edit mode is there a shortcut for deleting a line of text Something like Ctrl L in Visual Studio Shift Dele
  • 如何确保分页 REST API 中的数据完整性?

    我目前正在研究 REST API API返回的资源预计是来自数据库的海量数据 数据库中有数千万行 分页是必须的 以避免将数据写入 HTTP 响应时消耗大量内存 当客户端请求之间数据库中存在删除 添加行时 如何确保数据完整性 例如 page
  • Android 共享首选项的空指针异常

    我试图在共享首选项中保存一个整数值 并在应用程序重新启动时再次加载它 我在我的主要活动中创建了一个共享首选项 并尝试在单击菜单项时在另一个菜单侦听器类中保存整数值 菜单侦听器类位于不同的包中 并且菜单侦听器类扩展了主活动 但是当我尝试这样做
  • 如何使 GCC 将 .text 部分编译为 ELF 二进制文件中的可写部分?

    我希望能够动态更改我正在使用的库中的可执行代码 本质上 我想动态地 NOP 掉某些不需要的函数 但是 我正在使用的库的 text 部分是不可写的 大多数程序都是如此 我有该库的源代码 因此想使用 GCC 将其编译为可写 有没有办法做到这一点
  • Linq to SQL 如何执行“where [column] in (值列表)”

    我有一个函数 可以获取 id 列表 并且需要返回与该 id 关联的描述相匹配的列表 例如 public class CodeData string CodeId get set string Description get set publ
  • 如何调整 vb6 程序的大小,使其自动适应任何屏幕分辨率?

    我怎样才能有一个在 1280 1024 下正确打开的 vb6 程序 但当切换到其他分辨率 例如 640 480 时 我只能看到一半的屏幕 如何重新调整我的 vb6 程序的大小 以便它自动适合任何屏幕分辨率 您需要使用Screen对象 这将始
  • 更改 Html.DisplayFor 布尔复选框 MVC

    我有一个布尔属性 IsActive 视图中是对象及其属性 包括 IsActive 的列表 但在列表中 IsActive 是一个不可编辑的复选框 因为它是布尔值 如果我将 DisplayFor 更改为 DisplayTextFor 那么它将只
  • Excel VBA:合并循环内的范围

    I want to merge that repeating Chapters into just one cell by Chapter 这是我的代码如何进行循环的 Dim label As Control Dim itm As Obje
  • C中最好的计时方法?

    以高分辨率和可移植性对代码部分进行计时的最佳方法是什么 Time from here ProcessIntenseFunction to here printf Time taken d seconds d milliseconds sec
  • Maven Tycho:如何在产品构建中排除 eclipsec.exe?

    我将 Eclipse RCP 产品的构建从 PDE 构建切换到 Maven Tycho 除了主 品牌 启动器可执行文件之外 该产品现在还包括 eclipsec exe 文件 我们希望从我们的产品中省略这个基于控制台的启动器 因为它可能会让我
  • LinkedIn API 获取公司所有员工吗?

    是否可以获取公司所有员工的名单 不仅在当前用户网络中 就像这样的搜索返回 http api linkedin com v1 people search company name Apple 这在 LinkedIn 主网站上是可能的 所以我不
  • 在自定义验证属性中使用数据库上下文

    我正在尝试在我的 Core 2 项目中创建一个验证属性 它需要根据数据库中保存的现有值列表来验证该值 下面的代码不起作用 它无法访问数据库上下文 有什么想法为什么 如何纠正吗 public class BibValidatorAttribu
  • typeid 运算符返回的对象的生命周期是多少?

    如果我打电话typeid并检索返回的地址type info const type info info typeid Something 返回的对象的生命周期是多少typeid指向该对象的指针将保持有效多久 然而 实施实施了它们 结果type
  • R 箱线图频率

    我需要帮助 我正在使用R分析一些数据 我有一个名为 mytable 的频率表 我创建的如下 mytable table cut var1 12 cut var2 12 该表看起来像这样 1 2 2 3 3 4 1 3 2 1 2 3 6 0
  • IBM DB2 中的数据类型转换:BIGINT 到 VARCHAR

    我正在编写一个查询来做一些事情 但它没有按照我想要的方式工作 select CORR ID from TABLE1 where CORR ID not in select id from TABLE2 问题是 TABLE2 id 是一个 l
  • Cloud Functions for Firebase 可以跨项目使用吗?

    我希望每当新的 Pub Sub 消息发送到第三方项目 即跨项目 中的主题 订阅时触发 Pub Sub 函数 使用functions pubsub onPublish 经过一些研究和实验 我发现如果主题名称包含 并且默认为 projects
  • 我在 Flutter/Dart 异步代码执行方面遇到问题,例如它是如何工作的

    在 Flutter 中 我们使用 async wait 和 Future 有人可以解释一下 如果我们不使用另一个线程 在 dart 中不能这样做 并仅在主 UIThread 上运行作业 应用程序不会变得不稳定 因为即使我们等待作业执行它最终
  • 测试返回 IEnumerable 的函数

    有人可以指导我如何为返回 Ienumerable 的方法编写测试吗 这是我的方法 public IEnumerable
  • 如何将 Xamarin.Forms XAML UI 页面转换为 PDF 文件?

    在Xamarin Forms中 我想将我的xaml页面UI 有时我的页面在有更多内容时是可滚动的 转换为PDF 我已经尝试过PDFSharp https github com akgulebubekir PDFSharp Xamarin F
  • 在 XMLAGG 中对重复记录使用不同值

    我在 sql 中使用 XMLAGG 时遇到问题 我有一个包含多个可以重复的记录的表 该表包含客户地址和客户名称 Create Table cust data cust name varchar2 30 cust addr line1 var