sql - postgresql 中其他列的不同和列表

我正在使用 postgres DB,我有 table 两列 namesal

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();

相似文章

随机推荐

最新文章