GROUP BY使用问题请教

fangsky 2014-12-12 04:50:33
我有这样的数据要进行统计汇总
YID CTyear CTmonth CTcqbz CTsjcq CTBZ
1 2014 2 30 15 2月10号入职
2 2014 2 30 28
1 2014 3 28 27 请假一天
2 2014 3 27 29 加班两天

想得到这样的结果:
ID 总标准出勤 总实际出勤 备注
1 58 42 2月10号入职,请假一天
2 57 57 加班两天

我用下面的语句可以得到前面三个数据,最后一个备注的信息该如何处理呢?谢谢!!
SELECT yid, Ctyear, Sum(CTcqbz) AS cqbztj,Sum(CTsjcq) AS sjcqtj from ttable
GROUP BY yid, Ctyear
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangsky 2014-12-15
  • 打赏
  • 举报
回复
引用 4 楼 kongwei521 的回复:
最后一个备注信息用 stuff 也可以合并起来。 stuff((select ','+CTBZ from tb where YID=t.YID for xml path('')),1,1,'') notes
用不了,是ACCESS
fangsky 2014-12-15
  • 打赏
  • 举报
回复
引用 1 楼 rokerker 的回复:
是oracle吗? 是的话wmsys.wm_concat来连接,不是的话自己写函数来连接,函数的参数是yid,返回值是CTBZ的连接后的字符串,然后是在每个语句中调用。
不是ORACLE,ASP的基本不会去连ORACLE
蝶恋花雨 2014-12-15
  • 打赏
  • 举报
回复
最后一个备注信息用 stuff 也可以合并起来。 stuff((select ','+CTBZ from tb where YID=t.YID for xml path('')),1,1,'') notes
fangsky 2014-12-15
  • 打赏
  • 举报
回复
引用 2 楼 dogfish 的回复:
SELECT 
    yid, Ctyear, Sum(CTcqbz) AS cqbztj,Sum(CTsjcq) AS sjcqtj,  min(cast(yid as varchar(5))+' '+CTBZ) as ctbz
from ttable
GROUP BY yid, Ctyear
谢谢,为什么采用min函数
Dogfish 2014-12-14
  • 打赏
  • 举报
回复
SELECT 
    yid, Ctyear, Sum(CTcqbz) AS cqbztj,Sum(CTsjcq) AS sjcqtj,  min(cast(yid as varchar(5))+' '+CTBZ) as ctbz
from ttable
GROUP BY yid, Ctyear
rokerker 2014-12-12
  • 打赏
  • 举报
回复
是oracle吗? 是的话wmsys.wm_concat来连接,不是的话自己写函数来连接,函数的参数是yid,返回值是CTBZ的连接后的字符串,然后是在每个语句中调用。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧