SQL:如何减去两个字段属于同一个ID

时间:2018-06-13 13:02:14

标签: sql oracle11g

我输出如下

enter image description here

在上面的代码中,Tx_ID保持不变,但购买第二个条目变为NULL。所以我得到了多行。

现在我必须计算首次购买和第二次购买之间的时差,但TX_ID始终保持不变。

任何建议,非常感谢。

谢谢。

3 个答案:

答案 0 :(得分:1)

假设每个Tx_ID只有2个条目,您可以尝试:

flutter

答案 1 :(得分:1)

您可以使用LAG获取之前的值 然后使用它来获得当前记录的差异。

SELECT 
 t.*, 
 t.tx_time - LAG(t.tx_time) OVER (PARTITION BY t.tx_id ORDER BY t.tx_time) AS timestamp_diff 
FROM YOUR_TABLE t

答案 2 :(得分:1)

以下内容应该在第1次和第2次之间进行比较,以便获得Tx_ID

SELECT   tx_id, 
         Subtract(Max(tx_time),Min(tx_time)) 
FROM     tx_table T1 
WHERE    tx_time >= 
         ( 
                SELECT Max(tx_time) 
                FROM   tx_table T2 
                WHERE  tx_time < 
                       ( 
                              SELECT Max(tx_time) 
                              FROM   tx_table 
                              WHERE 
                              and    tx_id = t1.tx_id) 
                AND    tx_id = t1.tx_id) 
GROUP BY tx_id 
HAVING   count(*) > 1