假设table a table b table c
其中col2是某个人的帐号,date1 为每次开始工作时间,date2为每次结束工作时间
假设值分别为 1,2,3
table a
col1 (varchar),col2 (varchar)(某个人的帐号),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'yang' 'co3' 'co3' 2009-06-03, 2009-10-03,其实 不止这些记录
table b col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
其实 不止这些记录
table c col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date)
'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'xue' 'co3' 'co3' 2009-06-03, 2009-10-03,
其实 不止这些记录其三个表假设通过col1,col2 来连接
比如:select a. from a ,b,c where a.col1 = b.col1 and b.col1 = c.col1现在我要得结果是:要统计某个人 col2在a表中 (date1-date2)的和
在b表中 (date1-date2)的和
在c表中 (date1-date2)的和注意帐号在a表中有记录但是在b表或者c表中不一定有记录帐号 a中的工作时间的和sum(date1-date2), b中的工作时间的和sum(date1-date2), c中的工作时间的和sum(date1-date2)
比如:下面的数值:
wong 1 ,2 1,1
fu 2,2,2yang 1,0,0
xue 0,0,10
怎样用一条语句来实现呢???
其中col2是某个人的帐号,date1 为每次开始工作时间,date2为每次结束工作时间
假设值分别为 1,2,3
table a
col1 (varchar),col2 (varchar)(某个人的帐号),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'yang' 'co3' 'co3' 2009-06-03, 2009-10-03,其实 不止这些记录
table b col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
其实 不止这些记录
table c col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date)
'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'xue' 'co3' 'co3' 2009-06-03, 2009-10-03,
其实 不止这些记录其三个表假设通过col1,col2 来连接
比如:select a. from a ,b,c where a.col1 = b.col1 and b.col1 = c.col1现在我要得结果是:要统计某个人 col2在a表中 (date1-date2)的和
在b表中 (date1-date2)的和
在c表中 (date1-date2)的和注意帐号在a表中有记录但是在b表或者c表中不一定有记录帐号 a中的工作时间的和sum(date1-date2), b中的工作时间的和sum(date1-date2), c中的工作时间的和sum(date1-date2)
比如:下面的数值:
wong 1 ,2 1,1
fu 2,2,2yang 1,0,0
xue 0,0,10
怎样用一条语句来实现呢???
其中col2是某个人的帐号,date1 为每次开始工作时间,date2为每次结束工作时间 table a
col1 (varchar),col2 (varchar)(某个人的帐号),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'yang' 'co3' 'co3' 2009-06-03, 2009-10-03, 其实 不止这些记录
table b col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date) 'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
其实 不止这些记录
table c col1 (varchar),col2 (varchar),col3 (varchar),col4 (varchar),date1 (date),date2 (date)
'recno12' 'wong' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'fu' 'co3' 'co3' 2009-09-03, 2009-10-03,
'recno13' 'xue' 'co3' 'co3' 2009-06-03, 2009-10-03,
其实 不止这些记录 其三个表假设通过col1,col2 来连接
比如: select a. from a ,b,c where a.col1 = b.col1 and b.col1 = c.col1 现在我要得结果是: 要统计某个人 col2 在a表中 (date1-date2)的和
在b表中 (date1-date2)的和
在c表中 (date1-date2)的和 注意帐号在a表中有记录但是在b表或者c表中不一定有记录 帐号 a中的工作时间的和sum(date1-date2), b中的工作时间的和sum(date1-date2), c中的工作时间的和sum(date1-date2)
比如:下面的数值:
wong 1 ,2 1,1
fu 2,2,2 yang 1,0,0
xue 0,0,10
怎样用一条语句来实现呢???
1、a表有,b表,c表不一定有 用左连接
2、时间差 用减法即可
3、 形成1 ,2 1,1这样的结果集 用sys_connect_by
code as following:select distinct col2,sum(data2 - data1) over(partition by col2) total_work_time,
sum(data2*flag1 - data1*flag1) over(partition by col2) a_work_time,
sum(data2*flag2 - data1*flag2) over(partition by col2) b_work_time,
sum(data2*flag3 - data1*flag3) over(partition by col2) c_work_time from
(select a.*,1 flag1,0 flag2,0 flag3 from a
union select b.*,0 flag1,1 flag2,0 flag3 from b
union select c.*,0 flag1,0 flag2,1 flag3 from c);