2017-05-01 94 views
2

我在SQL Server 2008中有一個包含數據的表。 表包含時間組織量要求計算SQL Server 2008中的時間差(以分鐘爲單位)

CREATE TABLE support 
( ID varchar(50), 
    IN_ORGANIZATION varchar(MAX),  
    FROM_ORGANIZATION varchar(MAX), 
    TIMEDIF datetime    ); 

INSERT INTO support 
(ID, IN_ORGANIZATION,FROM_ORGANIZATION,TIMEDIF) 


VALUES 
('22907','ORGANIZATION_NAME_1','RODLAY LLP','2017-04-15 14:58:00.000'), 

('22907','MARY LOAN','ORGANIZATION_NAME_1','2017-04-15 15:00:00.000'), 


('23289','VENIXTON Ltd','ORGANIZATION_NAME_1','2017-04-21 11:00:00.000'), 

('23289','ORGANIZATION_NAME_1','Ocean Loan','2017-04-21 12:00:00.000'), 

('23289','Ocean Loan','ORGANIZATION_NAME_1','2017-04-21 13:00:00.000') 

; 

我想找到全職工作組織,要求工作數據:ORGANIZATION_NAME_1。 幫我寫CURSOR來計算時間。

Result: 
ID, TIMEDIF(minutes) 
22907, 2 
23289, 120 
+1

我不明白你是如何達到預期產出的。我認爲應該是120分鐘,而不是180分鐘,但無論如何請澄清。另外,如果您以_table_的形式向我們顯示數據,則會很有幫助,通過在每行的開頭添加4個空格將其格式化爲代碼。 –

+2

TIMEDIF的邏輯是什麼?你如何確定價值應該是什麼?而且你不需要一個光標來處理這種類型的事情。 –

回答

0

則DateDiff函數會做的伎倆

select id,datediff(minute,min(timedif),max(timedif)) AS time from support 
where in_organization = 'ORGANIZATION_NAME_1' or from_organization = 'ORGANIZATION_NAME_1' 
group by id ;  

我的輸出:

|id  |time 
1 |22907 |2 
2 |23289 |120 

讓TME知道任何疑問的情況下。

+0

如果它幫助你,請「Upvote」答案:) –

0

也許這個查詢將幫助您:

select 
    id, 
    DATEDIFF(m,MIN(TIMEDIF),MAX(TIMEDIF)) as [TIMEDIF(minutes)] 
from support 
    where IN_ORGANIZATION ='ORGANIZATION_NAME_1' 
     or FROM_ORGANIZATION ='ORGANIZATION_NAME_1' 
group by id 
+1

[不良習慣踢:使用速記與日期/時間操作 - 亞倫伯特蘭](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand -with-date-time-operations.aspx) – SqlZim

0

如果你只是隨意試圖讓行之間的TimeDifferences你可以嘗試這樣的事:

; WITH x AS 
(
    SELECT *, ROW_NUMBER() OVER(ORDER BY id) AS rwn 
From dbo.support 
) 
SELECT 
    x.ID 
, y.ID AS NextID 
, x.IN_ORGANIZATION 
, y.IN_ORGANIZATION NextInOrg 
, x.FROM_ORGANIZATION 
, y.FROM_ORGANIZATION NextFromOrg 
, x.TIMEDIF 
, y.TIMEDIF AS NextTimeDiff 
, x.rwn 
, DATEDIFF(MINUTE, x.TIMEDIF, y.TIMEDIF) AS DifferenceFromOneToTheNext 
FROM x 
    INNER JOIN x y ON x.rwn = y.rwn - 1 

如果你把以自己種子的身份,你已經可以得到一個參考指針。這真的是任意的。