【发布时间】:2020-01-14 21:53:07
【问题描述】:
表格很简单:
ID start_date end_date
1 2015-10-01 2015-10-02
2 2015-10-02 2015-10-03
3 2015-10-05 2015-10-06
4 2015-10-07 2015-10-08
ID 1 和 2 属于一个项目,因为 end_date 等于 start_date,ID 3 和 4 是不同的。
这是查找相同项目并按其花费时间排序的查询:
select P1.Start_Date, (
select min(P.End_Date)
from Projects as P
where P.End_Date not in (select Start_Date from Projects )
and P.End_Date > P1.Start_Date
) as ED
from Projects as P1
where P1.Start_Date not in (select End_Date from Projects )
order by datediff(day, P1.Start_Date, ED)
问题是:order by子句中的ED无效,但是不带datediff使用时有效:
order by ED
datediff 是在 select 子句之后计算的吗?有谁能解释一下吗?谢谢。
【问题讨论】:
标签: sql-server tsql sql-order-by datediff