现有数据如下:
部门 工号 姓名 日期 时间
安全环境监督部 574 杨业 2011/12/01 07:58
安全环境监督部 574 杨业 2011/12/01 17:31
安全环境监督部 574 杨业 2011/12/02 07:53
安全环境监督部 574 杨业 2011/12/02 07:55
安全环境监督部 574 杨业 2011/12/02 19:47
安全环境监督部 574 杨业 2011/12/04 08:07
安全环境监督部 574 杨业 2011/12/04 17:22希望通过查询得到如下的结果:
部门 工号 姓名 日期 时间 刷卡次数
安全环境监督部 574 杨业 2011/12/01 07:58 17:31 2
安全环境监督部 574 杨业 2011/12/02 07:53 07:55 19:47 3
安全环境监督部 574 杨业 2011/12/04 08:07 17:22 2其中关键难点在,组合时间数据串和统计当日记录数2项数据上,请高手赐教!
部门 工号 姓名 日期 时间
安全环境监督部 574 杨业 2011/12/01 07:58
安全环境监督部 574 杨业 2011/12/01 17:31
安全环境监督部 574 杨业 2011/12/02 07:53
安全环境监督部 574 杨业 2011/12/02 07:55
安全环境监督部 574 杨业 2011/12/02 19:47
安全环境监督部 574 杨业 2011/12/04 08:07
安全环境监督部 574 杨业 2011/12/04 17:22希望通过查询得到如下的结果:
部门 工号 姓名 日期 时间 刷卡次数
安全环境监督部 574 杨业 2011/12/01 07:58 17:31 2
安全环境监督部 574 杨业 2011/12/02 07:53 07:55 19:47 3
安全环境监督部 574 杨业 2011/12/04 08:07 17:22 2其中关键难点在,组合时间数据串和统计当日记录数2项数据上,请高手赐教!
replace(wm_concat(时间),',',' '),
count(时间)
from tb group by 部门 ,工号 ,姓名 ,日期
FROM TAB
GROUP BY 部门, 工号, 姓名, 日期
select * from
(select 部门 ,工号 ,姓名 ,日期 ,
replace(wm_concat(时间),',',' '),
count(时间) rn
from tb group by 部门 ,工号 ,姓名 ,日期 )
where rn>=2
replace(wm_concat(时间),',',' '),
count(时间)
from tb group by 部门 ,工号 ,姓名 ,日期
FROM TBL
GROUP BY 部门, 工号, 姓名, 日期
安全环境监督部 574 杨业 2011/12/02 07:53 07:55 19:47 3
安全环境监督部 574 杨业 2011/12/03 0
安全环境监督部 574 杨业 2011/12/04 08:07 17:22 2
安全环境监督部 574 杨业 2011/12/03 0
如果只有红色的这种记录如果时间是date型就没有必要转换了,我这边是字符所以to_date
with tb as
(select '安全环境监督部' d , '574' n, '杨业' m , '2011/12/01' r, '07:58' q from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/01', '17:31' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '07:53' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '07:55' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '19:47' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/04', '08:07' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/04', '17:22' from dual )
select '安全环境监督部', '574', '杨业' ,t1.r,t2.jl,nvl(t2.rn,0)from
(select (to_date((select min(r)from tb),'YYYY/MM/DD')+rownum-1) r
from dual connect by rownum<=(select max(to_date(r,'YYYY/MM/DD'))-min(to_date(r,'YYYY/MM/DD'))from tb)+1) t1
,(select '安全环境监督部', '574', '杨业' ,r ,replace(wm_concat(q),',',' ') jl,count(q) rn
from tb group by r )t2
where t1.r=t2.r(+)
order by t1.r
你需要的结果已经实现,不会截图^-^……
from shuaka t
group by t.deptid,t.empid,t.empname,t.riqi
create table T12 as
select '安全环境监督部' d , '574' n, '杨业' m , '2011/12/01' r, '07:58' q from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/01', '17:31' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '07:53' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '07:55' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/02', '19:47' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/04', '08:07' from dual union all
select '安全环境监督部', '574', '杨业', '2011/12/04', '17:22' from dual;select d ,n ,m ,r ,
replace(wm_concat(q),',',' '),
count(q)
from t12 group by d ,n ,m ,r
select b.sdate ,a.* from
(select to_char(to_date('2011-12', 'YYYY-MM') + rownum - 1, 'YYYY-MM-DD') as sdate from dual
connect by rownum <= to_number(to_char(last_day(to_date('2011-12', 'YYYY-MM')), 'dd'))) b
left jion b.sdate=a.日期
部门,工号,姓名,时间,wm_concat(日期)
from table t
group by 部门,工号,姓名,时间