当前位置: 首页 > 面试题库 >

Oracle:归一化为CSV字符串的字段

彭仲卿
2023-03-14
问题内容

我有一些像这样的标准化数据。

a | x
a | y
a | z
b | i
b | j
b | k

哪种查询将返回数据,以使“许多”面表示为CSV字符串?

a | x,y,z
b | i,j,k

问题答案:

标记,

如果您使用的是11gR2版本,但不是:-),则可以使用listagg

SQL> create table t (col1,col2)
  2  as
  3  select 'a', 'x' from dual union all
  4  select 'a', 'y' from dual union all
  5  select 'a', 'z' from dual union all
  6  select 'b', 'i' from dual union all
  7  select 'b', 'j' from dual union all
  8  select 'b', 'k' from dual
  9  /

Tabel is aangemaakt.

SQL> select col1
  2       , listagg(col2,',') within group (order by col2) col2s
  3    from t
  4   group by col1
  5  /

COL1  COL2S
----- ----------
a     x,y,z
b     i,j,k

2 rijen zijn geselecteerd.

如果您的版本不是11gR2,而是高于10gR1,那么我建议为此使用模型子句,如下所示:http : //rwijk.blogspot.com/2008/05/string-
aggregation-with-model-clause。 html

如果低于10,那么您可以在rexem到oracle-base页面的链接中,或者在上述博文中的OTN-thread链接中看到几种技术。

问候,罗布。



 类似资料:
  • 问题内容: 我发现了这种奇怪的行为,并且为此感到震惊……有人有什么想法吗? Oracle 10g:我有两个不同的表,都具有名为“ TESTCOL ”的列,作为 Varchar2 (10) ,不能为空。 如果我对 table1 执行此查询,则会得到正确的结果: 请注意 ,我不是专门放置“ 1234” …不是错字,而是动态生成的查询,因此我将尽量不进行更改(至少在不久的将来不会更改)。 但是,如果我在

  • 问题内容: 在更高版本中,我可以使用: 表: 员工 预期产量: 请帮助我获取 SQL Oracle 9i的*ID列中字符之间的子字符串。 * 问题答案: 您不需要正则表达式-只需使用和:

  • 问题内容: 我需要查询表中给定字符串的值。该表区分大小写,但我想在比较中执行ToLower()。 假设我有一个包含以下数据的类表。 我的查询应该是这样的 这是进行比较的最佳方法吗? 更新 我无法控制数据库或数据。我是只读用户。 问题答案: 不; 最好改善数据:创建一个数字ID,以表示这些看似毫无意义的类变体(可能还有一个相关的查找表来获取ID)。使用where子句中的ID列,您应该找到一个索引数字

  • 问题内容: 我试图创建一个简单的存储过程,将查询的结果存储到一个字符串中。 将返回 我想将“ aaaa,bbbb,cccc”存储到v_string1中。我所能想到的只是一个游标…是否有更好的方法来处理此问题? 问题答案: 使用SQL Fiddle:

  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么

  • 我有以下由Jackson映射的类(简化版): 在某些情况下,服务器返回,然后我想将name设置为空Java字符串。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串吗?