我正在将一些SQL Server 2008R2查询迁移到PostgreSQL9.0,但遇到了一些问题。下面是SQL Server查询:
stuff((select ', '+p.[NAME] as 'data()'
from BPROVIDERS_PROVIDER p, BORDER_ARTICLEORDERPROVIDER aop
where p.OID = aop.PROVIDER for xml path('')),1,1,'')) as pNAMES
阅读SQL Server文档时,我了解到这会创建一个逗号分隔的列表。我想我可以在Postresql中把stuff
函数改成overlay
函数。我说的对吗?
第二个问题是使用('')作为参数的SQL Server的for xml path
。它返回分配给名为pNAMES
的属性的值,而不是创建行元素。对吗?
带有tableforest = 'true'
属性的Postgresql Query_to_xml()
函数也有同样的功能吗?
谢谢。
发布于 2019-04-22 19:07:21
填充((SELECT DISTINCT ',‘+ CONVERT(VARCHAR,L.ROLE_SUB_CAT_ID) FROM PHS.dbo.PHS_ADMIN_USER_ACCESS_DTL K,PHS.dbo.PHS_ADMIN_USER_ROLE_SUB_CAT_MST L WHERE L.ROLE_SUB_CAT_ID = K.ROLE_SUB_CAT_ID和K.UMC_ID = A.UMC_ID K.CCR_ID = A.CCR_ID FOR XML PATH( '') ),1,1,’‘)作为ROLE_SUB_CAT_ID
将其转换为postgresql,如下所示:
string_agg((SELECT distinct ',‘|| cast(L.ROLE_SUB_CAT_ID as VARCHAR) FROM PHS.dbo.PHS_ADMIN_USER_ACCESS_DTL K,PHS.dbo.PHS_ADMIN_USER_ROLE_SUB_CAT_MST L WHERE L.ROLE_SUB_CAT_ID = K.ROLE_SUB_CAT_ID PHS.dbo.PHS_ADMIN_USER_ROLE_SUB_CAT_MST K.UMC_ID = A.UMC_ID和K.CCR_ID=A.CCR_ID ),1,1,'')作为ROLE_SUB_CAT_ID
https://stackoverflow.com/questions/14119517
复制相似问题