不同行和列上的两个日期之间的差异?

时间:2015-07-21 18:43:09

标签: mysql sql

我的表架构看起来像这样..

Load_ID | StopType | Departure_Date | Arrival_Date

有两种停止类型PK(皮卡)或DL(交付)

如果停止类型为PK,则出发日期存在,如果停止类型为DL,则存在交货日期。对于每个出发和交付对,负载ID是相同的。让我感到困惑的是,它们并不总是紧挨着排在一起。我应该使用什么查询?

4 个答案:

答案 0 :(得分:0)

你可以试试这样的事情:

select Load_ID, max(Departure_Date), max(Arrival_Date)
from Table
group by Load_ID

此查询将返回包含两个日期的每个加载,下一步通过DATEDIFF计算差异,如:

select Load_ID, DATEDIFF(max(Arrival_Date), max(Departure_Date)) as diff
from Table
group by Load_ID

答案 1 :(得分:0)

槽糕。我真的不明白这个问题,但我会尝试做一个心灵读者:

    with myCte
as
(
SELECT 
Load_ID, Max(Depature_date) as DDate, max(Arrival_Date) as ADate
from myTable
group by Load_ID
)

select Load_ID, DateDiff(day,DDate, ADate) as DateDifference

答案 2 :(得分:0)

我假设您不可能拥有多种类型。如果这些值是空的,那么只需一个简单的min()就可以避免使用case表达式。由于数据在一行中,因此计算差异很容易。 (听起来你的桌子的设计并不是很理想。)

select
    Load_ID,
    min(case when StopType = 'PK' then Departure_Date end) as Departure_Date),
    min(case when StopType = 'DL' then Arrival_Date) as Arrival_Date
from T
group by Load_ID

答案 3 :(得分:0)

您可以在一个查询中执行此操作:

SELECT
Load_ID, MAX(Depature_date) as departDate, MAX(Arrival_Date) as arriveDate, DateDiff(day,MAX(Depature_date),MAX(Arrival_Date)) as DateDiff 
FROM mailboxfilefilters 
GROUP BY Load_ID

这假设您希望两个日期之间的差异间隔为天。