Sql 减去不同列和不同行中的值
我有一个具有以下值的表:Sql 减去不同列和不同行中的值,sql,Sql,我有一个具有以下值的表: job name start_dt end_dt gggggg 4/5/2013 5/5/2013 iiiii 6/5/13 7/8/13 我想把gggggg的start\dt从iiii的end\dt分出来 我正在使用此查询: select a.job_nm,(b.end_dt-a.start_dt) as difference from JOB a,b where a.
job name start_dt end_dt
gggggg 4/5/2013 5/5/2013
iiiii 6/5/13 7/8/13
我想把gggggg
的start\dt
从iiii
的end\dt
分出来
我正在使用此查询:
select a.job_nm,(b.end_dt-a.start_dt) as difference from JOB a,b
where a.job_nm='ggggg' and b.job_nm='iiiii'.
这没有给我任何输出。如果这是SQL Server,您可以使用:
如果这是SQL Server,则可以使用:
一种方法是条件聚合:
select (max(case when j.job_nm = 'iiiii' then b.end_dt end) -
max(case when j.job_nm = 'ggggg' then a.start_dt end)
) as difference
from Job j
where j.job_nm in ('ggggg', 'iiiii');
您可以使用
datediff()
函数,但对于datetimes
我发现减法更容易。一种方法是条件聚合:
select (max(case when j.job_nm = 'iiiii' then b.end_dt end) -
max(case when j.job_nm = 'ggggg' then a.start_dt end)
) as difference
from Job j
where j.job_nm in ('ggggg', 'iiiii');
您可以使用
datediff()
函数,但是对于datetimes
我发现减法更容易。您使用的是哪个数据库引擎?您使用的是哪个数据库引擎?