首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >string_agg(character_varying)不存在

string_agg(character_varying)不存在
EN

Stack Overflow用户
提问于 2021-02-05 14:51:17
回答 1查看 653关注 0票数 1

我正在从MSSQL迁移到PostgreSQL。

MSSQL查询:

代码语言:javascript
复制
SELECT * FROM dbo.Mtr_userdetails AS table1 JOIN( SELECT urmo.urm_userid STUFF((SELECT ',' + urm.urm_role_name FROM dbo.STL_CS_Mtr_userrolemapping urm WHERE urm.urm_userid = 'test2' AND urm.urm_status = 'A' AND urm.urm_appid = 'BCA' FOR XML PATH('')),1,1,'') [user_roles],urmo.urm_appid FROM dbo.Mtr_userrolemapping urmo WHERE urmo.urm_appid = 'BCA' AND urmo.urm_userid = 'test2' GROUP BY urmo.urm_userid,urmo.urm_appid) AS table2 ON table1.ud_userid = table2.urm_userid WHERE (table1.ud_userid = 'test2')

我正在尝试将上面的ms sql查询转换为postgresql语法。

PostgreSQL查询:

代码语言:javascript
复制
SELECT *
FROM STL_Mtr_userdetails AS table1
  JOIN (
    SELECT urmo.urm_userid,
           string_agg((SELECT ',' || urm.urm_role_name 
                       FROM STL_CS_Mtr_userrolemapping urm
                       WHERE urm.urm_userid = 'test2' 
                         AND urm.urm_status = 'A' 
                         AND urm.urm_appid = 'BCA')::varchar, 1::varchar, 1::varchar, ''::varchar) user_roles,
           urmo.urm_appid
    FROM STL_CS_Mtr_userrolemapping urmo
    WHERE urmo.urm_appid = 'BCA'
      AND urmo.urm_userid = 'test2'
    GROUP BY urmo.urm_userid,
             urmo.urm_appid
  ) AS table2 ON table1.ud_userid = table2.urm_userid
WHERE (table1.ud_userid = 'test2')

执行postgresql查询时,我将面临以下错误

String_agg(字符变化,字符变化)不存在。没有任何提示与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

EN

回答 1

Stack Overflow用户

发布于 2021-02-05 15:00:18

不需要复杂的嵌套标量子选择。只需直接汇总:

代码语言:javascript
复制
SELECT *
FROM STL_Mtr_userdetails AS table1
  JOIN (
    SELECT urmo.urm_userid,
           string_agg(urm.urm_role_name, ',') as user_roles
    FROM STL_CS_Mtr_userrolemapping urmo
    WHERE urmo.urm_appid = 'BCA'
    GROUP BY urmo.urm_userid
  ) AS table2 ON table1.ud_userid = table2.urm_userid
WHERE table1.ud_userid = 'test2'

错误消息产生于这样一个事实,即您试图用4个(varchar)参数调用一个string_agg()函数。但是string_agg()已定义,只接收两个参数(要聚合的值和分隔符)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66065401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档