碰到这样的问题我该怎么办!~~~

dani1984 2008-10-31 07:37:07
假设我有一张表其中有三个字段1,2,3(1为数据,2为数据出去的时间,3为数据回来的时间)
其中1中的字段可以是相同的
举个例子来说:
1 2 3
10001 10:10 10:20
10001 10:25 11:25
10001 10:45 12:00
x
.................
现在要求展示的是
1 4 5 6 7 8 9 其中(4.5.6.7.8.9)都是没有的字段,4是1中x出去最早的时间;
5是x回来最早的时间;6是x出去最迟的时间;7是x回来最迟的时间;8是4和5之间的时间差以分钟记;
9是6和7之间的时间差以分钟记;

1 4 5 6 7 8 9
10001 10:10 10:20 10:45 12:00 10 75
可以再建张临时表存放这些记录
现在我该怎么把这些数据取出来呢?~~~~
求教中!~~~~
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dani1984 2008-10-31
  • 打赏
  • 举报
回复
新手分不多还请楼上的两位多多见谅!~~~
dani1984 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 octwind 的回复:]
SQL code
select col1,min(col2) col4,min(col3) col5,max(col2) col6,max(col3) col7
datediff(n,cast(min(col2) as datetime),cast(min(col3) as datetime)) col8,
datediff(n,cast(max(col2) as datetime),cast(max(col3) as datetime)) col9
from tb group by col1
[/Quote]


谢谢!~~我已经做出来了!~~我也把我写的贴出来



SELECT YDANCODE, DPTNAME, DPTCODE, I_E_DATE, 审核开始时间, 接收开始时间,
审核结束时间, 接收最后时间, number, DATEDIFF(n, 审核结束时间, 接收最后时间)
AS date1, DATEDIFF(n, 审核开始时间, 接收开始时间) AS date2
FROM (SELECT IMEDITAB.YDANCODE, DPTTAB.DPTNAME, IMEDITAB.DPTCODE,
IMEDITAB.I_E_DATE, MAX(IMEDITAB.ETRTM) AS 接收最后时间,
MAX(IMEDITAB.CMDTM) AS 审核结束时间, MIN(IMEDITAB.ETRTM)
AS 接收开始时间, MIN(IMEDITAB.CMDTM) AS 审核开始时间,
COUNT(IMEDITAB.YDANCODE) AS number
FROM IMEDITAB LEFT OUTER JOIN
DPTTAB ON IMEDITAB.DPTCODE = DPTTAB.DPTCODE
GROUP BY IMEDITAB.YDANCODE, IMEDITAB.DPTCODE, IMEDITAB.I_E_DATE,
DPTTAB.DPTNAME) DERIVEDTBL
ORDER BY I_E_DATE DESC


我做了两次查询,没有再建一张临时表!现在需要做的把两个时差,date1,date2给它格式化下,这样看起来更舒服,一眼就可以知道
是间隔了多少分钟多少小时,这个问题还要请教下大家!~~~
octwind 2008-10-31
  • 打赏
  • 举报
回复

select col1,min(col2) col4,min(col3) col5,max(col2) col6,max(col3) col7
datediff(n,cast(min(col2) as datetime),cast(min(col3) as datetime)) col8,
datediff(n,cast(max(col2) as datetime),cast(max(col3) as datetime)) col9
from tb group by col1
wxg22526451 2008-10-31
  • 打赏
  • 举报
回复
--> Test Data: @T
declare @T table ([1] int,[2] varchar(10),[3] varchar(10))
insert into @T
select 10001,'10:10','10:20' union all
select 10001,'10:25','11:25' union all
select 10001,'10:45','12:00'

select * from @T
--Code
select [1],
[4]=MIN([2]),
[5]=MIN([3]),
[6]=Max([2]),
[7]=Max([3]),
[8]=DATEDIFF(mi,MIN([2]),MIN([3])),
[9]=DATEDIFF(mi,max([2]),max([3]))
from @T group by [1]

--Result
/*
1 4 5 6 7 8 9
----------- ---------- ---------- ---------- ---------- ----------- -----------
10001 10:10 10:20 10:45 12:00 10 75
*/
ChinaJiaBing 2008-10-31
  • 打赏
  • 举报
回复

复杂顶.....

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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