在 SQL Server 中找到最低的两个最小值并找到两者之间的差异?

主持人217

我有一个交易表,我必须在其中找到每个客户的第一个和第二个交易日期。查找第一个日期非常简单,我可以使用 MIN() func 来查找第一个日期,但是第二个日期,特别是找到两者之间的差异变得非常具有挑战性,不知何故我无法找到任何可行的方法:

select a.customer_id, a.transaction_date, a.Row_Count2
from ( select
       transaction_date as transaction_date,
       reference_no as customer_id,
       row_number() over (partition by reference_no 
                          ORDER BY reference_no, transaction_date) AS Row_Count2
       from transaction_detail 
     ) a
where  a.Row_Count2 < 3
ORDER BY a.customer_id, a.transaction_date, a.Row_Count2

给我这个:

在此处输入图片说明

我想要的是,以下列:

||客户ID|| ||第一次购买日期|| ||购买的第二个日期|| ||差异。黑白第二次和第一次约会 ||

rs。

您可以使用窗口函数 LEAD/LAG 返回您要查找的结果

首先尝试使用 LEAD 通过参考号查找所有前导日期,使用原始逻辑为每一行生成行号。然后,您可以对结果集中的行编号值 1 行的日期进行差异处理。

例如(我不排除同一天的交易并将它们视为单独的并根据上面查询的结果集生成行号,您可以轻松地更改下面的 sql 将它们视为一个并删除它们,以便您获得下一个日期第二次约会):

declare @tbl table(reference_no int, transaction_date datetime)
insert into @tbl
select 1000, '2018-07-11'
UNION ALL
select 1001, '2018-07-12'
UNION ALL
select 1001, '2018-07-12'
UNIOn ALL
select 1001, '2018-07-13'
UNIOn ALL
select 1002, '2018-07-11'
UNIOn ALL
select 1002, '2018-07-15'

select customer_id, transaction_date as firstdate, 
transaction_date_next seconddate, 
datediff(day, transaction_date,  transaction_date_next) diff_in_days
from
(
    select reference_no as customer_id, transaction_date, 
    lead(transaction_date) over (partition by reference_no 
                                   order by transaction_date) transaction_date_next,
    row_number() over (partition by reference_no ORDER BY transaction_date) AS Row_Count
    from @tbl
) src
where Row_Count = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL Server 2012中找到不同行的两个日期单元格之间的差异?

来自分类Dev

SQL Server中两个日期之间的月份差异

来自分类Dev

在SQL查询中找到两个时间的差异

来自分类Dev

SQL Server 2012:同步两个服务器并同时写入两者

来自分类Dev

如何在SQL Server中的两个交叉列之间找到以秒为单位的时间

来自分类Dev

SQL Server中两个单独的表中的两列之间的差异

来自分类Dev

sql,用于计算介于两者之间的空值并插入数字

来自分类Dev

根据公共密钥查找两个表之间的差异(Microsoft SQL Server)

来自分类Dev

根据公共密钥查找两个表之间的差异(Microsoft SQL Server)

来自分类Dev

获取 SQL Server 中不包括星期五的两个日期之间的日期差异

来自分类Dev

使用SQL从两个不同的表中打印数据,但使用第三个表作为两者之间的链接

来自分类Dev

如何在SQL Server的两个varchar字符串之间找到一个字符串?

来自分类Dev

在SQL Server中的两个日期条件之间

来自分类Dev

计算两个日期之间的SUM SQL SERVER

来自分类Dev

从SQL Server获取两个日期之间的数据

来自分类Dev

SQL Server查找两个日期之间的记录

来自分类Dev

在SQL Server中的两个日期条件之间

来自分类Dev

SQL Server:查找两个日期之间的记录

来自分类Dev

SQL Server中两个日期之间的天数

来自分类Dev

两个 SQL Server 表之间的多个 FOREIGN KEY

来自分类Dev

SQL Server约束以允许“两个唯一”值

来自分类Dev

SQL Server:来自两个或多个表的值

来自分类Dev

合并两个表-SQL Server

来自分类Dev

SQL Server:对两个变量求和

来自分类Dev

在python中找到两个局部最小值

来自分类Dev

在SQL Server中找到丢失的组条目

来自分类Dev

两个聚合值之间的 derby sql 差异或如何组合两个 sql 语句

来自分类Dev

在Go中找到两个整数之间的最小值的正确方法是什么?

来自分类Dev

在numpy数组中找到两个值之间的差异

Related 相关文章

  1. 1

    如何在SQL Server 2012中找到不同行的两个日期单元格之间的差异?

  2. 2

    SQL Server中两个日期之间的月份差异

  3. 3

    在SQL查询中找到两个时间的差异

  4. 4

    SQL Server 2012:同步两个服务器并同时写入两者

  5. 5

    如何在SQL Server中的两个交叉列之间找到以秒为单位的时间

  6. 6

    SQL Server中两个单独的表中的两列之间的差异

  7. 7

    sql,用于计算介于两者之间的空值并插入数字

  8. 8

    根据公共密钥查找两个表之间的差异(Microsoft SQL Server)

  9. 9

    根据公共密钥查找两个表之间的差异(Microsoft SQL Server)

  10. 10

    获取 SQL Server 中不包括星期五的两个日期之间的日期差异

  11. 11

    使用SQL从两个不同的表中打印数据,但使用第三个表作为两者之间的链接

  12. 12

    如何在SQL Server的两个varchar字符串之间找到一个字符串?

  13. 13

    在SQL Server中的两个日期条件之间

  14. 14

    计算两个日期之间的SUM SQL SERVER

  15. 15

    从SQL Server获取两个日期之间的数据

  16. 16

    SQL Server查找两个日期之间的记录

  17. 17

    在SQL Server中的两个日期条件之间

  18. 18

    SQL Server:查找两个日期之间的记录

  19. 19

    SQL Server中两个日期之间的天数

  20. 20

    两个 SQL Server 表之间的多个 FOREIGN KEY

  21. 21

    SQL Server约束以允许“两个唯一”值

  22. 22

    SQL Server:来自两个或多个表的值

  23. 23

    合并两个表-SQL Server

  24. 24

    SQL Server:对两个变量求和

  25. 25

    在python中找到两个局部最小值

  26. 26

    在SQL Server中找到丢失的组条目

  27. 27

    两个聚合值之间的 derby sql 差异或如何组合两个 sql 语句

  28. 28

    在Go中找到两个整数之间的最小值的正确方法是什么?

  29. 29

    在numpy数组中找到两个值之间的差异

热门标签

归档