我正在使用 postgres DB,我有 table 两列 name
和 sal
。
name Sal
Raunak 10000
Raunak 5000
Rahul 500
Raunak 300
而且我要
Raunak 10000,5000,300
Rahul 500
我正在使用 JPA 有什么方法可以获取 JPA 数据
回答1
您可以使用 string_agg 函数构建 values 的逗号分隔列表:
select name, string_agg(sal::text, ',')
from t
group by name
如果您的应用程序可以使用 json 数据,您可能需要考虑 json_agg
而不是 csv。
回答2
如果要保留 sal
列的数据类型,可以使用返回 values 数组的 array_agg()
。不确定JPA是否会让您正确访问它
select name, array_agg(sal) as sals
from the_table
group by name;
回答3
如果我正确理解您的问题,您希望通过以下 SQL 语句获得结果:
SELECT
name,
string_agg (sal::varchar(22), ', ') as sals
FROM
test
GROUP BY
name;
由于它是 postgresql 相关的 SQL,我们不能或很难通过公共对象查询来表达它。您可以在 JPA 代码中通过本机查询模式构造上述 SQL 。
@Query(value = "<the above query>", nativeQuery = true)
List<Object[]> query();