在PostgreSQL中以分组方式选择某些格式

时间:2019-04-05 09:10:13

标签: java sql postgresql csv group-by

所以我必须通过阅读PostgreSQL中的查询来用Java编写CSV。问题是csv必须具有某种格式,而我无法做到这一点。我正在尝试在postgresql中完成此操作,但是如果不可能的话,我也接受有关如何在Java中解决它的想法。

我尝试了很多group by语法,但是它不能正常工作,在这一点上,我什至不能确定它在postgresql中是否可行,但我想以这种方式做到这一点。假设我想看到所有学生分组学习。我以为这是因为日期,但是我删除了它,没有任何区别。

SELECT classID,
       firstName || secondName || fathersName,
       studentGender,
       to_char(studentBirthDate, 'DD.MM.YYYY HH24:mm:ss')
FROM Student, Class
WHERE studentGender = Male
GROUP BY classID, firstName, secondName, fathersName, studentGender, sutdentBirthdate
ORDER BY studentID;

我期望得到以下结果:

1, PaulLoganDan, JakeIanGolagan, JohnDoeNick, Male, NotSureHere
2, MatthewJoshuaSamuel, JosephJamesBenjamin, AdamLukeHarry, LewisNathanBrad, Male, NotSureHere

我得到了什么:

1, PaulLoganDan, Male, 1.1.1999 \n
1, JakeIanGolagan, Male, 2.2.1999 \n
1, JohnDoeNick, Male, 3.3.1999 \n

2, MatthewJoshuaSamuel, Male, 4.4.1999 \n
2, JosephJamesBenjamin, Male, 5.5.1999 \n
2, AdamLukeHarry, Male, 6.6.1999 \n
2, LewisNathanBrad, Male, 7.7.1999 \n

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找STRING_AGG函数,并且它是针对此类问题而设计的。自PostgreSQL 9.0起存在。

我认为它应该看起来像这样:

credential.RevokeTokenAsync(CancellationToken.None);

或者,从8.4版开始,有ARRAY_AGG函数:

SELECT classID,
       STRING_AGG(firstName || secondName || fathersName, ', ')
FROM Student, Class
WHERE studentGender = Male
GROUP BY classID
ORDER BY studentID;

我认为在较早的版本中没有为此功能提供汇总功能。