我有一个带有int数组的表测试列,其值为{1000,4000,6000}或{1000}或{1000,4000},称为ekw.
这些值与另一个表中的描述字符串匹配
这些值与另一个表中的描述字符串匹配
tab: test id | name | ekw ----------------- 1 | One | {1000} 2 | Two | {1000,4000} 3 | Three | {1000,6000} tab: ekwdesc id | value | desc ----------------- 1 | 1000 | Max 2 | 2000 | Tim 3 | 3000 | Rita 5 | 4000 | Sven 6 | 5000 | Tom 7 | 6000 | Bob
是否可以选择这些列并打印字符串?
就像是:
select name,ekw from test,ekwdesc
我想看到这个结果:
id | name | ekwdesc ----------------- 1 | One | Max 2 | Two | Max,Sven 3 | Three | Max,Sven,Bob
我试过IN和ANY,但无法让它工作.
您有正确的想法使用any运算符进行连接.连接完成后,剩下的就是使用
string_agg
将结果转换为您想要的格式:
SELECT name,STRING_AGG(description,',') FROM test JOIN ekwdesc ON ekwdesc.value = ANY(test.ekw) GROUP BY name
有关可执行示例,请参见随附的SQLFiddle.