【问题标题】:Oracle Listagg function returns nullOracle Listagg 函数返回 null
【发布时间】:2016-09-02 10:59:18
【问题描述】:

good_name 列对于所有结果都是空的。查询中有什么问题?

select fp.id,
   listagg(fpg.name, ',') within group(order by fpg.name) good_name
from fp_place_goods fppg join 
   fp_places fp on fppg.place_id = fp.id join
   fp_goods fpg on fppg.good_id = fpg.id
GROUP BY fp.id

however query below works

select fp.id,
   listagg(fpg.id, ',') within group(order by fpg.id) good_ids
from fp_place_goods fppg join 
   fp_places fp on fppg.place_id = fp.id join
   fp_goods fpg on fppg.good_id = fpg.id
GROUP BY fp.id




select fp.id, fpg.name from fp_places fp join
      fp_place_goods fppg on fp.id = fppg.place_id join
      fp_goods fpg on fpg.id = fppg.good_id 

以图片形式返回结果

【问题讨论】:

  • 查询看起来没问题。您能否在可以与论坛共享的一些测试数据上重现该问题?另外,您是否尝试使用 select fp.id, fpg.name from ... 来运行它以首先查看连接的样子?
  • join 完美运行,max() 函数在 fpg.name 上运行,但我找不到使用 listagg 缺少的内容。

标签: oracle join listagg


【解决方案1】:

这是因为 good_name 是 nvarchar,而 to_char(fpg.name) 解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2012-07-15
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多