(T-SQL) 如何查询审计表,并找到两个日期之间的变化

bbb07777

审计表如下所示:

Audit ID    VendorID     PaymentType     CreateDateUTC
 999        8048         2               2017-10-30-08:84:24
1000        1234         5               2017-10-31-01:17:34
1001        8048         7               2017-10-31-01:17:45
1002        1234         5               2017-10-31-01:17:53
1003        1234         7               2017-10-31-01:18:23
1004        1234         5               2017-11-01-01:18:45

在这个例子中,你可以看到说 - VendorID 1234 开始为 PaymentType 5,然后有另一个条目,它仍然是 5(审计表记录了与我的查询无关的其他更改),然后它更改为 7,但又回到 5 .

假设我想回答这个问题:“从现在到日期 X,这些 VendorID 的 PaymentType 发生了变化”。奖金是 - 这是以前的 PaymentType。

预期成绩:

VendorID  PaymentType  Prev_PaymentType
8048      7            2

因此,如果我在现在和 10-31-01:00:00 之间进行查询,我希望它返回 VendorID 8048 已更改(作为奖励,它以前的 PaymentType 为 2),但 VendorID 1234 不应该出现,因为在 2017-10-31-01:00:00 它是 5,现在仍然是 5,尽管有间歇性的变化。

如何查询付款类型在 2 个日期之间发生变化的 VendorID?

谢谢!

保罗麦克斯韦

这是我证明有用的替代方法,使用 OUTER APPLY。请注意,AuditID 列用作决胜局主要是因为示例数据没有日期时间值。

SQL小提琴

CREATE TABLE AuditTable (
      AuditID int
    , VendorID int
    , PaymentType int
    , CreateDateUTC date
);

INSERT INTO AuditTable
      VALUES (999, 8048, 2, '2017-10-30'),
      (1000, 1234, 5, '2017-10-31'),
      (1001, 8048, 7, '2017-10-31'),
      (1002, 1234, 5, '2017-10-31'),
      (1003, 1234, 7, '2017-10-31'),
      (1004, 1234, 5, '2017-11-01');

查询 1

select
*
from AuditTable a
outer apply (
  select top(1) PaymentType, CreateDateUTC
  from AuditTable t
  where a.VendorID = t.VendorID
  and a.CreateDateUTC >= t.CreateDateUTC
  and a.AuditID > t.AuditID
  order by CreateDateUTC DESC, AuditID DESC
  ) oa (PrevPaymentType, PrevDate)
order by
      vendorid 
    , CreateDateUTC

结果

| AuditID | VendorID | PaymentType | CreateDateUTC | PrevPaymentType |   PrevDate |
|---------|----------|-------------|---------------|-----------------|------------|
|    1000 |     1234 |           5 |    2017-10-31 |          (null) |     (null) |
|    1002 |     1234 |           5 |    2017-10-31 |               5 | 2017-10-31 |
|    1003 |     1234 |           7 |    2017-10-31 |               5 | 2017-10-31 |
|    1004 |     1234 |           5 |    2017-11-01 |               7 | 2017-10-31 |
|     999 |     8048 |           2 |    2017-10-30 |          (null) |     (null) |
|    1001 |     8048 |           7 |    2017-10-31 |               2 | 2017-10-30 |

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用两个子查询从两个表中提取值?T-SQL

来自分类Dev

如何在t-sql中计算两个日期之间的of年数?

来自分类Dev

带有两个不同表的 t/sql 查询

来自分类Dev

在T-SQL中检查两个日期之间的日期

来自分类Dev

在T-SQL中检查两个日期之间的日期

来自分类Dev

来自子查询的两个日期之间的SQL查询

来自分类Dev

T-SQL-根据销售情况确定两个日期之间的特定天数

来自分类Dev

顺序不同的两个查询之间的T-SQL UNION

来自分类Dev

顺序不同的两个查询之间的T-SQL UNION,全部按

来自分类Dev

SQL查询以检索两个日期之间的字段列表

来自分类Dev

T-SQL 从两个日期生成间隔

来自分类Dev

两个表之间的SQL SELECT按日期联接

来自分类Dev

如何使用WHERE子句查询两个日期范围之间的数据?-SQL

来自分类Dev

如何在 postgres sql 查询中仅计算两个日期之间的天数。

来自分类Dev

T-SQL比较两个表的值

来自分类Dev

T-SQL-如何将两个表的结果与两个不同的WHERE子句合并

来自分类Dev

如何在两个日期之间从Sql中的表中获取记录

来自分类Dev

SQL查询:两个表之间没有保留关系时如何显示NULL

来自分类Dev

SQL:两个日期之间的差异

来自分类Dev

SQL在两个日期之间选择

来自分类Dev

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

来自分类Dev

SQL:如何按日期范围连接两个表

来自分类Dev

如何使用两个表进行SQL查询

来自分类Dev

SQL查询,如何从两个表中获取数据

来自分类Dev

SQL查询以获取两个日期之间月份的日期范围列表

来自分类Dev

SQL查询按日期范围查找介于两个日期之间的所有数据

来自分类Dev

仅工作日在两个日期和两次之间进行SQL查询

来自分类Dev

两个表之间的SQL视图

来自分类Dev

SQL在两个表之间选择

Related 相关文章

  1. 1

    如何使用两个子查询从两个表中提取值?T-SQL

  2. 2

    如何在t-sql中计算两个日期之间的of年数?

  3. 3

    带有两个不同表的 t/sql 查询

  4. 4

    在T-SQL中检查两个日期之间的日期

  5. 5

    在T-SQL中检查两个日期之间的日期

  6. 6

    来自子查询的两个日期之间的SQL查询

  7. 7

    T-SQL-根据销售情况确定两个日期之间的特定天数

  8. 8

    顺序不同的两个查询之间的T-SQL UNION

  9. 9

    顺序不同的两个查询之间的T-SQL UNION,全部按

  10. 10

    SQL查询以检索两个日期之间的字段列表

  11. 11

    T-SQL 从两个日期生成间隔

  12. 12

    两个表之间的SQL SELECT按日期联接

  13. 13

    如何使用WHERE子句查询两个日期范围之间的数据?-SQL

  14. 14

    如何在 postgres sql 查询中仅计算两个日期之间的天数。

  15. 15

    T-SQL比较两个表的值

  16. 16

    T-SQL-如何将两个表的结果与两个不同的WHERE子句合并

  17. 17

    如何在两个日期之间从Sql中的表中获取记录

  18. 18

    SQL查询:两个表之间没有保留关系时如何显示NULL

  19. 19

    SQL:两个日期之间的差异

  20. 20

    SQL在两个日期之间选择

  21. 21

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

  22. 22

    SQL:如何按日期范围连接两个表

  23. 23

    如何使用两个表进行SQL查询

  24. 24

    SQL查询,如何从两个表中获取数据

  25. 25

    SQL查询以获取两个日期之间月份的日期范围列表

  26. 26

    SQL查询按日期范围查找介于两个日期之间的所有数据

  27. 27

    仅工作日在两个日期和两次之间进行SQL查询

  28. 28

    两个表之间的SQL视图

  29. 29

    SQL在两个表之间选择

热门标签

归档