SQL:在几分钟内返回多个表和DATEDIFF的列
试图从3个不同的表中检索列,TurnTime是第4个表中的DATEDIFFSQL:在几分钟内返回多个表和DATEDIFF的列,sql,tsql,datediff,Sql,Tsql,Datediff,试图从3个不同的表中检索列,TurnTime是第4个表中的DATEDIFF 客户名称、订单类型名称、贷款编号、周转时间1、周转时间2、周转时间3、周转时间4 表: tbl客户、tblOrderType、tblOrder、tblOrderActivity、tblActivity 我在放置DateDiff时遇到语法错误。我认为我做得非常错误,并试图在时代中获得差异 下表用于DATEDIFF的tblOrderActivity tblActivity ActivityID
客户名称、订单类型名称、贷款编号、周转时间1、周转时间2、周转时间3、周转时间4
表:
tbl客户、tblOrderType、tblOrder、tblOrderActivity、tblActivity
我在放置DateDiff时遇到语法错误。我认为我做得非常错误,并试图在时代中获得差异
下表用于DATEDIFF的tblOrderActivity
tblActivity ActivityID ActivityName
1 Received
2 Keyed
3 Printed
4 Delivered
我想从1-2,2-3,3-4,1-4中找到DATEDIFF<代码>活动ID和活动日期
在tbl中。订单活动
我试图将一个(选择DATEDIFF
与我希望从中检索日期的表的INNERJOIN
放在一起,但是,它也导致语法错误。
这是我目前的代码:
SELECT
dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber,
dbo.tblOrderActivity.ActivityDate,
DATEDIFF(MINUTE, ActivityID=1, ActivityID=2) AS TurnTime1,
DATEDIFF(MINUTE, ActivityID=2, ActivityID=3) AS TurnTime2,
DATEDIFF(MINUTE, ActivityID=3, ActivityID=4) AS TurnTime3,
DATEDIFF(MINUTE, ActivityID=1, ActivityID=4) AS TurnTime4
FROM
dbo.tblOrder
INNER JOIN
dbo.tblCustomer ON dbo.tblOrder.CustomerID = dbo.tblCustomer.CustomerID
INNER JOIN
dbo.tblOrderActivity ON dbo.tblOrder.OrderID = dbo.tblOrderActivity.OrderID AND
dbo.tblOrder.OrderID = dbo.tblOrderActivity.OrderID
INNER JOIN
dbo.tblActivity ON dbo.tblOrderActivity.ActivityID = dbo.tblActivity.ActivityID
INNER JOIN
dbo.tblOrderType ON dbo.tblOrder.OrderTypeID = dbo.tblOrderType.OrderTypeID
ORDER BY dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber
像这样的
SELECT
dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber,
a1.ActivityDate,
DATEDIFF(MINUTE, a1.ActivityDate, a2.ActivityDate) AS TurnTime1,
DATEDIFF(MINUTE, a2.ActivityDate, a3.ActivityDate) AS TurnTime2,
DATEDIFF(MINUTE, a3.ActivityDate, a4.ActivityDate) AS TurnTime3,
DATEDIFF(MINUTE, a1.ActivityDate, a4.ActivityDate) AS TurnTime4
FROM
dbo.tblOrder
INNER JOIN
dbo.tblCustomer ON dbo.tblOrder.CustomerID = dbo.tblCustomer.CustomerID
INNER JOIN
dbo.tblOrderActivity a1 ON dbo.tblOrder.OrderID = a1.OrderID and a1.activityid = 1
INNER JOIN
dbo.tblOrderActivity a2 ON dbo.tblOrder.OrderID = a2.OrderID and a1.activityid = 2
INNER JOIN
dbo.tblOrderActivity a3 ON dbo.tblOrder.OrderID = a3.OrderID and a1.activityid = 3
INNER JOIN
dbo.tblOrderActivity a4 ON dbo.tblOrder.OrderID = a4.OrderID and a1.activityid = 4
INNER JOIN
dbo.tblOrderType ON dbo.tblOrder.OrderTypeID = dbo.tblOrderType.OrderTypeID
ORDER BY dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber
Ketil感谢您对Ketil最终代码的帮助。 这是我的问题的完整功能和有效的解决方案
SELECT
dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber,
DATEDIFF(MINUTE, a1.ActivityDate, a2.ActivityDate) AS [TurnTime1],
DATEDIFF(MINUTE, a2.ActivityDate, a3.ActivityDate) AS [TurnTime2],
DATEDIFF(MINUTE, a3.ActivityDate, a4.ActivityDate) AS [TurnTime3],
DATEDIFF(MINUTE, a1.ActivityDate, a4.ActivityDate) AS [TurnTime4]
FROM
dbo.tblOrder
LEFT OUTER JOIN
dbo.tblCustomer ON dbo.tblOrder.CustomerID = dbo.tblCustomer.CustomerID
LEFT OUTER JOIN
dbo.tblOrderActivity a1 ON dbo.tblOrder.OrderID = a1.OrderID and a1.ActivityID = 1
LEFT OUTER JOIN
dbo.tblOrderActivity a2 ON dbo.tblOrder.OrderID = a2.OrderID and a2.ActivityID = 2
LEFT OUTER JOIN
dbo.tblOrderActivity a3 ON dbo.tblOrder.OrderID = a3.OrderID and a3.ActivityID = 3
LEFT OUTER JOIN
dbo.tblOrderActivity a4 ON dbo.tblOrder.OrderID = a4.OrderID and a4.ActivityID = 4
INNER JOIN
dbo.tblOrderType ON dbo.tblOrder.OrderTypeID = dbo.tblOrderType.OrderTypeID
ORDER BY dbo.tblCustomer.CustomerName, dbo.tblOrderType.OrderTypeName, dbo.tblOrder.LoanNumber, a1.ActivityDate;
这似乎执行了,但没有返回任何列的行