Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以查找下一个STAU并获取它们之间的时间_Sql_Google Bigquery - Fatal编程技术网

SQL查询以查找下一个STAU并获取它们之间的时间

SQL查询以查找下一个STAU并获取它们之间的时间,sql,google-bigquery,Sql,Google Bigquery,我在争论bigquery中的sql查询,我有一个包含多个票证号的表,以及来自票证的所有其他数据。我想知道在一个特定的州,谁持有一张长票 我的数据如下所示: SELECT TicketNumber, State, SUM(DateDiff) FROM (SELECT ticket_details.TicketNumber, ticket_state.State, DATEDIFF(DateUpdated,DateCreated) AS DateDiff FROM ticket_de

我在争论bigquery中的sql查询,我有一个包含多个票证号的表,以及来自票证的所有其他数据。我想知道在一个特定的州,谁持有一张长票

我的数据如下所示:

SELECT TicketNumber, State, SUM(DateDiff)
FROM
        (SELECT ticket_details.TicketNumber, ticket_state.State, DATEDIFF(DateUpdated,DateCreated) AS DateDiff FROM ticket_details
        LEFT JOIN ticket_state
        ON ticket_details.TicketNumber = ticket_state.TicketNumber) TableDetailState
WHERE State = 'Awaiting User'
GROUP BY TicketNumber
票号|日期更新|状态|注释|

我正试图得到这个:

票号|日期更新|状态|下一状态|日期更改

我一直在玩各种不同的查询,但我似乎总是得到重复。像这个:

SELECT distinct allinc.TicketNumber as inc, allinc.state, DateChanged, allinc.TicketNumber, nextupdate
FROM `incidents` allinc
left outer join (
select *, CAST(DateUpdated AS datetime) as DateChanged, state as DateChanged from `incidents`
) resinc
on allinc.TicketNumber = resinc.TicketNumber and CAST(resinc.DateChanged AS datetime) > CAST(allinc.TicketNumber AS datetime) 
where allinc.state = 'Awaiting User' 
order by inc
最终目标是获取票证设置为“等待用户”的总时间,但每个票证的总时间可以是多次


任何建议都很好。

我想你是在描述
lead()


我认为您正在描述
lead()


我建议你先规范一下你的桌子。我认为最好是把票的细节放在一张桌子上,而票的州放在另一张桌子上

票证详细信息(PK票证编号,其他详细信息)

票证状态(PK票证编号、PK日期创建、日期更新、状态)

这样,一张票可以根据需要有多个州。至于状态更改,您可以在ticket_状态中插入一条具有相同TicketNumber的新记录,新记录的创建日期将是前一条记录的更新日期

对于获取处于给定状态(如“等待用户”)的总时间的查询,您可能可以执行以下操作:

SELECT TicketNumber, State, SUM(DateDiff)
FROM
        (SELECT ticket_details.TicketNumber, ticket_state.State, DATEDIFF(DateUpdated,DateCreated) AS DateDiff FROM ticket_details
        LEFT JOIN ticket_state
        ON ticket_details.TicketNumber = ticket_state.TicketNumber) TableDetailState
WHERE State = 'Awaiting User'
GROUP BY TicketNumber

我建议你先规范一下你的桌子。我认为最好是把票的细节放在一张桌子上,而票的州放在另一张桌子上

票证详细信息(PK票证编号,其他详细信息)

票证状态(PK票证编号、PK日期创建、日期更新、状态)

这样,一张票可以根据需要有多个州。至于状态更改,您可以在ticket_状态中插入一条具有相同TicketNumber的新记录,新记录的创建日期将是前一条记录的更新日期

对于获取处于给定状态(如“等待用户”)的总时间的查询,您可能可以执行以下操作:

SELECT TicketNumber, State, SUM(DateDiff)
FROM
        (SELECT ticket_details.TicketNumber, ticket_state.State, DATEDIFF(DateUpdated,DateCreated) AS DateDiff FROM ticket_details
        LEFT JOIN ticket_state
        ON ticket_details.TicketNumber = ticket_state.TicketNumber) TableDetailState
WHERE State = 'Awaiting User'
GROUP BY TicketNumber

您正在使用什么RDBMS(mysql、sql server、postgres、oracle等)?@BobBryden。示例数据和期望的结果也会有所帮助。您正在使用什么RDBMS(mysql、sql server、postgres、oracle等)?@BobBryden。样本数据和期望的结果也会有所帮助。先生,您是一位英雄!我从来没有听说过铅,谢谢你的帮助。你是个英雄!我从未听说过铅,谢谢你的帮助。