Mysql 查询以返回记录之间的日期差
我有一张带有保单编号、状态代码、状态日期的表格 我想获得每个策略的状态日期的差异。在使用每个策略的状态日期进行排序后,将有多个具有不同状态代码的记录 P>不同的状态日期只应考虑某些状态码。 例如,认为5,6是要考虑的状态代码< /P>Mysql 查询以返回记录之间的日期差,mysql,sql,teradata,Mysql,Sql,Teradata,我有一张带有保单编号、状态代码、状态日期的表格 我想获得每个策略的状态日期的差异。在使用每个策略的状态日期进行排序后,将有多个具有不同状态代码的记录 P>不同的状态日期只应考虑某些状态码。 例如,认为5,6是要考虑的状态代码< /P> pol_nm st_cd st_date pol 1 5 1st june pol 1 6 2nd june pol 1 7 4th june pol 1 6 6th june pol 1 8 9th
pol_nm st_cd st_date
pol 1 5 1st june
pol 1 6 2nd june
pol 1 7 4th june
pol 1 6 6th june
pol 1 8 9th june
pol 1 9 10th june
pol 1 10 11th june
我应该得到如下输出:
pol_nm sleep_tm
pol 1 6
这是6月4日至6月1日+6月9日至6月6日的差值
有人能帮我查询输出吗
基于新需求的一些示例:
Policy_No Status_Cd Status_Dt
A 8 02/01/2011
A 23 03/30/2011
Policy_Sleep_Time 0
---------------------------------------------------------
Policy_No Status_Cd Status_Dt
B 8 12/29/2011
B 27 01/28/2012
B 27 01/28/2012 124
B 34 05/31/2012
Policy_Sleep_Time 124
---------------------------------------------------------
Policy_No Status_Cd Status_Dt
C 4 02/11/2007
C 4 02/11/2007
Policy_Sleep_Time 0
---------------------------------------------------------
Policy_No Status Cd Status_Dt
D 8 9/17/2012
D 8 9/17/2012
D 8 9/17/2012
D 23 1/1/2013
D 3 2/1/2013
D 5 2/5/2012
D 23 3/1/2013
D 8 3/6/2013
D 8 3/6/2013
D 44 3/9/2013
D 1 3/23/2013
Here the policy sleep time is 35
您仍然没有指定实际规则,因此此光标逻辑只是一个猜测: 按pol_nm和st_date排序,然后对每个pol_nm重复: 找到一行的st_cd为5或6,并记住它是st_日期 找到下一行的st_cd 5/6,并计算两个st_日期之间的差异 重复1和2,直到到达下一个pol_nm 求和差异 这将转换为以下SQL
SELECT pol_nm, SUM(days)
FROM
(
SELECT pol_nm, next_date-MIN(ST_DATE) AS days
FROM
(
SELECT pol_nm, ST_CD, ST_DATE,
MIN(CASE WHEN ST_CD NOT IN (5,6) THEN ST_DATE END)
OVER (PARTITION BY pol_nm
ORDER BY ST_DATE
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS next_date
FROM tab
QUALIFY ST_DATE <> next_date
) AS dt
GROUP BY pol_nm, next_date
) AS dt
GROUP BY pol_nm
迪特尔你能在写你的问题时再努力一点吗?例如,表中列的名称是什么,输出列是什么?列名是策略号、状态代码、状态日期。为睡眠时间再添加一列。我需要检查睡眠时间是否正确,睡眠时间是否显示在另一个表中,其中仅显示一次保单编号。您是如何选择6月4日和6月1日的记录的?使用什么逻辑?欢迎使用堆栈溢出,迪特!我真的很高兴在这里见到你!嗨,迪特尔,我对需求做了一些修改。现在我有一个名为policy的表。在policy表中有几个字段,但我主要关注policyno、状态代码和状态更改日期。睡眠时间需要根据这些数据来计算。如果某个策略存在状态代码23和27,则该策略应显示睡眠时间,否则不显示例如:策略\u无状态\u Cd状态\u Dt a 8 02/01/2011 a 23 03/30/2011策略\u睡眠时间0我在上面的问题中给出了示例。你能看一下吗?你还没有指定任何规则,我的水晶球也没有告诉我。所以,请你指定一个算法,如何计算睡眠时间。