我的表架构看起来像这样..
Load_ID | StopType | Departure_Date | Arrival_Date
有两种停止类型PK(皮卡)或DL(交付)
如果停止类型为PK,则出发日期存在,如果停止类型为DL,则存在交货日期。对于每个出发和交付对,负载ID是相同的。让我感到困惑的是,它们并不总是紧挨着排在一起。我应该使用什么查询?
答案 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
这假设您希望两个日期之间的差异间隔为天。