各位大大,請教關於sql的問題,各位大大,請教一個關於sql的問題

2023-01-19 05:40:23 字數 2122 閱讀 3760

1樓:匿名使用者

資料如下

create table test

(姓名 varchar(10),

日期 varchar(5),

時間 varchar(5),

型別 varchar(4))

insert into test values ('張三','09-05','08:00','mj01')

insert into test values ('張三','09-05','08:05','mj02')

insert into test values ('張三','09-05','10:15','mj02')

insert into test values ('張三','09-05','10:20','mj01')

insert into test values ('李四','09-05','08:00','mj01')

insert into test values ('李四','09-05','08:05','mj02')

執行select t1.姓名,t1.型別+'>'+t2.

型別 出入方向,datediff(minute,cast('2013-'+t1.日期+' '+t1.時間 as datetime),cast('2013-'+t2.

日期+' '+t2.時間 as datetime)) 用時

from

(select row_number() over (partition by 姓名 order by 日期+時間) rn,* from test) t1,

(select row_number() over (partition by 姓名 order by 日期+時間) rn,* from test) t2

where t1.姓名=t2.姓名 and t1.rn=t2.rn-1 and t1.型別<>t2.型別 and t1.日期=t2.日期

結果以上語句僅限使用於sqlserver2005以上版本或oracle10g以上版本

2樓:匿名使用者

難點在於把一對資料劃分到一起。我這裡通過分組排序

select *,row_number() over (partition by [姓名] order by 時間) seq from tmp

得到下表:

這樣,每個奇數和比它大1的偶數就是一對。當然,如果原表中每一對資料並不是相鄰的,我這個方法就不對了。這時需要其他的劃分方法。

(最合理的方式是增加一個批次欄位,同一對記錄的批次相同,不同對記錄的批次不同)

下面是完整**:

with tmp([姓名],[日期],[時間],[型別]) as (

select '張三','09-05','08:00','mj01' union all

select '張三','09-05','08:05','mj02' union all

select '張三','09-05','10:15','mj02' union all

select '張三','09-05','10:20','mj01' union all

select '李四','09-05','08:00','mj01' union all

select '李四','09-05','08:05','mj02')

select a.[姓名],a.[日期],

a.[型別]+'>'+b.[型別] [出入方向],

datediff(mi,convert(datetime,'2013-'+a.[日期]+' '+a.[時間]+':00')

,convert(datetime,'2013-'+b.[日期]+' '+b.[時間]+':00'))[用時]

from (

select *,row_number() over (partition by [姓名] order by 時間) seq from tmp

) a inner join (

select *,row_number() over (partition by [姓名] order by 時間) seq from tmp

) b on a.[姓名]=b.[姓名] and a.[日期]=b.[日期]

and a.seq+1=b.seq and a.seq=2*(a.seq/2)+1

結果如下:

電腦配置問題,請教各位大大

看你玩什麼遊戲了,如果不是什麼大型遊戲,就建議你amd雙核,2g記憶體,320g硬碟,顯示卡就用個七彩虹的,主機板華碩支援這配置就行了,320w電源,顯示器19寸三星或華碩 3500 玩遊戲,配置來了 intel i3 2120 720 華碩p8h61 m le 450 記憶體 金士頓ddr3 13...

請教關於SQL日期計算的問題,請教一個關於SQL日期計算的問題

首先要把表單提交過來的日期轉換成一個日期字串,如 datestr request date datestr left datestr,4 right datestr,4 datestr left datestr,7 right datestr,2 然後把sql語句改成 sql select date...

緊急請教各位關於體檢的問題

穆藥師提醒你 就是你所說的體檢專案是不會驗出你所吃的藥物的!這些體檢專案只是一些非常常規的檢查,沒有特殊檢查!本人提醒你如下 檢查是具有針對性,而不是針對藥的成分來的,所以應該不會檢查出你吃了什麼藥。看來你想取得一個比較理想的檢查結果吧。但事實上即使吃藥也不一定能改變檢查結果,因為有些病毒是蛋白質外...