2016-01-01 74 views
0
Type Status date      ID   Users 
------------------------------------------------------------- 
    2  1  6/1/2015 8:43:13.557 AM 1140914474 2B 4E 
    1  1  6/1/2015 8:43:40.057 AM 1140914474 2B 4E 
    2  1  6/1/2015 12:29:15.093 PM 655666666 2B 4E 
    1  1  6/1/2015 12:32:43.067 PM 655666666 2B 4E 
    2  1  6/1/2015 6:02:30.557 PM 1694543676 2B 4E 
    1  1  6/1/2015 6:14:34.180 PM 1694543676 2B 4E 

我需要獲取行類型2和類型1之間的日期差異,並將所有時間總和爲天。SQL Server 2012中的自加入

回答

0

一樣的,對於SQL Server 2005 :-)這個查詢將返回你想要聚合

select 
    cast(b.date as date) day, 
    datediff(s, a.date, b.date) diff 
from 
    mytable a 
join 
    mytable b on a.ID = b.ID 
where 
    a.Type = 2 and b.Type = 1 

使用該查詢作爲CTE的所有數據:

with result as 
( 
    select 
     cast(b.date as date) dt, 
     datediff(s, a.date, b.date) diff 
    from 
     mytable a 
    join 
     mytable b on a.ID = b.ID 
    where 
     a.Type = 2 and b.Type = 1 
) 
select 
    dt, sum(diff) difftotal 
from 
    result 
group by 
    dt; 
+0

感謝您的幫助我終於做了一個腳本。它正在工作,但我仍然在工作,但它仍然在工作。這是它的外觀: – Shiva200178

+0

SELECT CardNo, \t BikeId, \t起始日期, \t TIMP, \t DATEDIFF(MI,起始日期,TIMP)作爲Utilizat FROM(SELECT \t CardNo, \t BikeId, \t起始日期, (SELECT MIN(TransferDate) FROM [Transaction] b WHERE b.BikeId = a.BikeId AND b.CardNo = CardNo AND \t b.StartDate> a.TransferDate \t)AS TimpFROM [交易]一個 WHERE MONTH(起始日期)= '11' 和([類型] = 1或[類型] = 2) 和一年(起始日期)= '2015年' 和\t FinalGateFulfillmentStatus = '2' 和CardId中= a.CardId 和BikeId不爲空 \t)爲C – Shiva200178

+0

我敢肯定有一個掠奪更多的工作,因爲我發現所有準備一些小故障:(我仍然必須找到如何總結day's.But再次感謝大家,所有幫助表示讚賞 – Shiva200178

0

查詢您的問題這將是波紋管:

select 
    datea, 
    sum(differenceSec) as Total 
from (
select a.type, 
    cast(a.date as date) datea, 
    cast(b.date as date) dateb, 
    DATEDIFF (ss , a.date , b.date) as differenceSec 
from data a 
    inner join data b 
    on b.id = a.id 
     and b.type = 1 
    where a.type = 2) result 
group by datea 

查詢的第一部分,按天的結果,總結他們。而在子查詢,我們得到2型和1型

的區別是在幾秒鐘之差,但你想,你可以改變它。

這裏你可以找到一個例子:http://sqlfiddle.com/#!3/600f9/24與您的數據。

查詢組的由天的第一部分的結果,總結其。在子查詢中,我們獲得了類型2和類型1之間的區別。

+0

謝謝你的幫助我做了finall Y的一個script.It是工作,但我還有人戰利品對it.This工作是如何看起來 – Shiva200178

+0

SELECT CardNo,BikeId,起始日期,TIMP,DATEDIFF(MI,起始日期,TIMP)作爲Utilizat FROM(SELECT CardNo,BikeId,起始日期,(SELECT MIN(TransferDate)FROM [交易] b其中b.BikeId = a.BikeId AND b.CardNo = CardNo AND \t b.StartDate> a.TransferDate)AS TimpFROM [交易]一個WHERE MONTH(起始日期)=' 11' 和([類型] = 1或[類型] = 2)和年(起始日期)= '2015' 和FinalGateFulfillmentStatus = '2' 和CardId中= a.CardId和BikeId不爲空)爲C – Shiva200178

+0

我確信有更多的掠奪工作,因爲我發現所有準備一些小故障:(我仍然必須找到如何總結一天。但再次感謝大家,所有的幫助表示讚賞 – Shiva200178