我有以下查询:
SELECT
tkoh.ticketid,
tkoh.ownergroup,
tkoh.owndate,
tck.ACTUALFINISH
FROM
tkownerhistory tkoh
LEFT JOIN
ticket tck on tck.ticketid = tkoh.ticketid
WHERE
tkoh.ticketid IN ('О1253565', 'О1253578')
AND tkoh.ownergroup IS NOT NULL
ORDER BY
tkoh.ticketid, tkoh.owndate;
它返回如下内容:
我需要计算时间,每个组拥有一个记录(当前记录的所有权 - 下一记录的所有权),但是,如果有最终所有者,时间必须减去ACTUALFINISH而不是来自下一条记录,因为它可以在盛行中完成。我已经使用简单的IF在Excel file中完成了它,但在SQL中它真的可能吗?
答案 0 :(得分:0)
SELECT t.*,
trim(to_char(floor(t.res_sec/60/60),'00'))||':'||trim(to_char(floor(mod(t.res_sec/60,60)),'00'))||':'||trim(to_char(mod(t.res_sec,60),'00')) as res_hhmiss
FROM (SELECT
tkoh.ticketid,
tkoh.ownergroup,
tkoh.owndate,
tck.ACTUALFINISH,
abs(tkoh.owndate - nvl(lead(tkoh.owndate) over(order by tkoh.ticketid, tkoh.owndate), tck.ACTUALFINISH))*24*60*60 as res_sec
FROM tkownerhistory tkoh
LEFT JOIN ticket tck on tck.ticketid = tkoh.ticketid
WHERE tkoh.ticketid IN ('О1253565', 'О1253578') and tkoh.ownergroup is not null
ORDER BY tkoh.ticketid, tkoh.owndate);
答案 1 :(得分:0)
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
Memo1: TMemo;
procedure ApplicationEvents1Hint(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure TForm1.ApplicationEvents1Hint(Sender: TObject);
begin
Memo1.Lines.Add(Application.Hint);
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Application.Hint := 'Hello';
end;