sql ,groupby分组后显示几列数据,

SELECT T.DEP_ID, to_char(trunc(to_date(t.option_time,'yyyy-mm-dd hh24:mi:ss'),'dd'),'yyyymmdd'),NVL(COUNT(T.OPTION_ID),0) AS ADDCOUNT
FROM MST_USER_OPTION T
WHERE T.OPTION_FLG != 0
GROUP BY T.DEP_ID,to_char(trunc(to_date(t.option_time,'yyyy-mm-dd hh24:mi:ss'),'dd'),'yyyymmdd')
ORDER BY ADDCOUNT

trunc是截断数据,把日期截断成了,天相等的, 防止天和groupby T.DEP_ID 发生冲突.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,如果您需要将分组后的每个组中除了分组列之外的其他列的值转换成列表,可以使用GROUP_CONCAT函数结合DISTINCT和CONCAT函数来实现。 假设我们有一个表格students,包含学生姓名、所学科目和成绩,如下所示: | name | subject | score | | ------- | ------- | ----- | | Alice | Math | 75 | | Alice | English | 82 | | Bob | Math | 90 | | Bob | English | 85 | | Charlie | Math | 80 | | Charlie | English | 88 | 现在我们需要按照姓名分组,并将每个分组的科目和成绩转换成一个列表。可以使用以下SQL语句实现: ```sql SELECT name, GROUP_CONCAT(DISTINCT CONCAT(subject, ':', score)) as subjects_scores FROM students GROUP BY name ``` 这个查询将表格按照姓名分组,将每个分组的科目和成绩合并为一个字符串,使用DISTINCT关键字去重,使用CONCAT函数将科目和成绩拼接成一个字符串,并在两者之间加上冒号,得到一个类似于"Math:75,English:82"的字符串。最后使用GROUP_CONCAT函数将每个分组的字符串合并为一个逗号分隔的字符串,得到一个表格,其中每个行代表一个分组,第一列为分组的姓名,第二列为该分组的科目成绩列表,每个科目成绩之间用逗号分隔。 查询结果如下所示: | name | subjects_scores | | ------- | ---------------------| | Alice | Math:75,English:82 | | Bob | Math:90,English:85 | | Charlie | Math:80,English:88 | 这样就实现了每个分组的其他列值变成列表的操作。注意,这里得到的是字符串类型的列表,如果需要使用列表数据类型,需要在应用程序中进行转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值