2013-09-26 39 views
0

我正在尝试计算两个日期在同一字段之间的平均时间。2来自同一列中的日期在一个SQL查询中

基本上我有一个交易日期和每个交易的ID和每个交易的客户ID。

我需要得到第一笔交易和第二笔交易之间的时间。我不介意在excel中计算两者之间的平均值,但我不知道如何从同一个字段中提取两个日期。

第一个事务的transaction.created_at减去数据库中每个客户的第二个事务的transaction.created_at。我可以拉一个交易日期一样

select 
customer.id, 
transaction.created_at 
count(transaction.id) 
from transaction 

having count(transaction.id) = 2 

感谢

+1

那么它是MySQL还是MS SQL Server? –

回答

0

不确定这是否总是有计数(*)= 2?如果是这样,我认为你可以使用最小和最大,不是?

/* 
create table dbo.Example (tran_id int,created_at datetime,cust_id int) 
insert dbo.example values (1,'10/1/2012',900) 
insert dbo.example values (2,'10/2/2012',901) 
insert dbo.example values (3,'10/18/2012',590) 
insert dbo.example values (4,'10/10/2012',676) 
insert dbo.example values (5,'10/11/2012',123) 
insert dbo.example values (6,'10/17/2012',456) 
insert dbo.example values (7,'10/9/2012',901) 
insert dbo.example values (8,'10/30/2012',900) 
insert dbo.example values (9,'10/4/2012',456) 
insert dbo.example values (10,'10/17/2012',676) 
*/ 
select 
cust_id, 
max([created_at]) as [Last Date], 
min([created_at]) as [First Date], 
datediff(hh,min([created_at]) ,max([created_at])) as [Hours diff] 
from example 
group by cust_id 
having count(*) = 2 
order by cust_id 
+0

我最终走上了这条路,它对我有用。 –

0

请尝试以下方法检索特定客户的交易数:

Select 
Customer.id, 
count(transaction.id) 
from transaction 
where Customer.id = '10' 

这里10指定已搜查你的customer id。您必须将此customer id作为参数传递到您创建的SP中。

+0

是的,但我需要拉2人的大型数据库的日期,而不是个人客户ID。实际上我需要3列。 1与customer_ID,一个与第一个交易的日期和一个为第二个交易日期。 –

相关问题