我有一个查询,该查询是我从另一个开发人员那里继承的,这是它的select语句
select distinct
wm_concat(
nvl(
listagg(USER_CODE,',') within group (order by USER_CODE),
USER_CODE
)
)
如何使用listagg更新它?
我了解listagg的作用及其运行方式,但是我不确定将nvl包装的listagg封装在wm_concat中的结果是什么,并且由于我们现在使用的是12c,所以我无法测试他们原来的输出应该是什么样子。
答案 0 :(得分:2)
SDL_MOUSEBUTTONUP
是一个未公开的Oracle函数,其功能与sPos moveClock(int event){
sPos temPos = setPos(0,0);
if(tempMoveVar==1){
temPos = setPos(gvMousePos.x-mPos.x,gvMousePos.y-mPos.y);
mPos = setPos(gvMousePos.x,gvMousePos.y);
}else if(event==-1){ //Mouse Down
mPos = setPos(gvMousePos.x,gvMousePos.y);
tempMoveVar=1;
}
if(event==-65){ //Mouse Up
tempMoveVar=0;
}
return temPos;
}
几乎相同,并且不鼓励使用。由于它不受官方支持,因此升级时随时可能会损坏。
您没有显示整个查询,因此仍有待确认,但是:
我看不到将WM_CONCAT()
用作LISTAGG()
的包装器的逻辑
使用WM_CONCAT()
似乎没有意义:LISTAGG()
是一个聚合函数,因此使用它意味着NVL(LISTAGG(user_code ...) ..., user_code)
列已聚合。由于此列是汇总列,因此您不能在LISTAGG()
...
最重要的是,我只是建议删除所有那些花哨的(可能是无效的)东西,并使用一个简单的聚合表达式:
user_code
答案 1 :(得分:0)
WM_CONCAT(some_field)
与LISTAGG(some_field, ',') WITHIN GROUP (ORDER BY some_field)
本质上是相同的,因此,由于LISTAGG(...)
返回单个值,因此WM_CONCAT
实际上是无操作的。从查询中删除它,然后继续。