查找上次更新者和上次更新日期

德韦恩

有人告诉我针对以下情况提出解决方案。

我需要基于“ EmployeeID”返回“最后更新日期”和“最后更新者”列。该查询必须在父表和所有子表中搜索最新条目,并返回按ID分组的列。我正在寻找一种不使用UNION ALL来连接父表和子表的解决方案,并且要解决这样一种情况,即两个不同的用户可以在不同表的同一EmployeeID(外键或主键)上输入最新记录。

例如,Jim今天更新了Employee表的EmployeeID 1,Paul也更新了EmployeeID 1的Employee_Address表。基于该EmployeeID 1,有两条记录是今天的最后更新日期,由不同用户输入。

请参阅架构和联合所有脚本,在其中我无法弄清其中的“上次更新者”部分。

CREATE TABLE EMPLOYEE
(
  EMPLOYEE_ID INT,
  NAME VARCHAR(100),
  LAST_UPDATED_BY VARCHAR(200),
  LAST_UPDATED_DT DATE
)

CREATE TABLE EMPLOYEE_AWARD
(
  AWARD_ID INT,
  EMPLOYEE_ID INT,
  AWARD_NAME VARCHAR(100),
  LAST_UPDATED_BY VARCHAR(200),
  LAST_UPDATED_DT DATE
)

CREATE TABLE EMPLOYEE_ADDRESS
(
  ADDRESS_ID INT,
  EMPLOYEE_ID INT,
  "ADDRESS" VARCHAR(100),
  LAST_UPDATED_BY VARCHAR(200),
  LAST_UPDATED_DT DATE
)


INSERT INTO EMPLOYEE
    VALUES  (1,'Paul Smith', 'GomesR', '6/22/2015'),
            (2,'Francis Jones', 'KellyR', '5/20/2013'),
            (3,'Paul Bo', 'GomesR', '11/09/2015'),
            (4,'Ed Li', 'TurnerR', '1/19/2012')


INSERT INTO EMPLOYEE_AWARD
    VALUES  (10,1,'Employee of the Month', 'GomesR', '6/22/2015'),
            (20,3,'Employee of the Month', 'KellyR', '5/20/2013'),
            (30,1,'Employee of the Quater', 'GomesR', '11/09/2015'),
            (40,3,'Employee of the Month', 'TurnerR', '1/19/2012'),
            (50,2,'Employee of the Month', 'KellyR', '11/11/2011')


INSERT INTO EMPLOYEE_ADDRESS

    VALUES  (100,1,'Address 1','GomesR', '6/25/2015'),
            (200,2,'Address 2','TurnerR', '5/28/2015'),
            (300,3,'Address 3','TurnerR', '11/20/2015'),
            (400,4,'Address 4','GomesR', '6/14/2014')



SELECT      D.EMPLOYEE_ID, Max(D.LAST_UPDATED_DT) LAST_UPDATED_DT--, D.LAST_UPDATED_BY
FROM        EMPLOYEE A

INNER JOIN  (   SELECT      EMPLOYEE_ID, LAST_UPDATED_DT, LAST_UPDATED_BY
                FROM        EMPLOYEE 
                UNION ALL
                SELECT      EMPLOYEE_ID, LAST_UPDATED_DT, LAST_UPDATED_BY
                FROM        EMPLOYEE_AWARD 
                UNION ALL
                SELECT      EMPLOYEE_ID, LAST_UPDATED_DT, LAST_UPDATED_BY
                FROM        EMPLOYEE_ADDRESS

                ) AS D

ON A.EMPLOYEE_ID = D.EMPLOYEE_ID
GROUP BY D.EMPLOYEE_ID
布莱恩·德米利亚(Brian DeMilia)

如果在2个不同的表上2个不同的用户在同一天根据需要更新了一个雇员,则将为同一雇员返回2行。

select employee_id,
       last_updated_dt,
       last_updated_by
  from (select x.*,
               max(last_updated_dt) over(partition by employee_id) as max_last_updated_dt
          from (select employee_id,
                       last_updated_dt,
                       last_updated_by
                  from employee
                union all
                select employee_id,
                       last_updated_dt,
                       last_updated_by
                  from employee_award
                union all
                select employee_id,
                       last_updated_dt,
                       last_updated_by
                  from employee_address) x) x
 where last_updated_dt = max_last_updated_dt

小提琴:http ://sqlfiddle.com/#!3/a4503c/1/0

您不应该避免使用union all数据位于三个不同的表中,因此这是的适当应用union all

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找上次运行yum更新的时间

来自分类Dev

查找上次更新的时间戳的更快方法

来自分类Dev

使用Entity Framework 6属性,存储行创建日期和上次更新日期

来自分类Dev

根据上次更新日期对记录数进行计数+空

来自分类Dev

在 WordPress 中显示帖子的上次更新日期

来自分类Dev

查找上次出现的href

来自分类Dev

在Excel 2013中查找上次日期值?

来自分类Dev

上次MS Office更新的日期?

来自分类Dev

“上次更新日期...”的日期在本地预览中和部署时不同

来自分类Dev

查找上次创建的记录 RSpec 测试

来自分类Dev

pysftp:如何更新上次修改日期

来自分类Dev

文件上次更新

来自分类Dev

aws cli查询以查找上次拍摄的快照,拍摄的日期,使用的标签(如果有),实例的名称标签和实例ID

来自分类Dev

查找日期文件上次修改

来自分类Dev

Hive-如何为增量表跟踪和更新Hive中的上次修改日期?

来自分类Dev

Hive-如何跟踪和更新增量表中Hive中的上次修改日期?

来自分类Dev

Oracle SQL查询:查找上次更改数据的时间

来自分类Dev

如何查找上次打开的工作簿的名称

来自分类Dev

查找上次特定的Numpy数组具有值的时间

来自分类Dev

如何查找特定字段的上次更新时间戳(ORACLE)

来自分类Dev

在仪表板中添加“上次更新”的日期

来自分类Dev

Laravel 5.5:成功登录时不会更新上次登录和上次登录 IP

来自分类Dev

Postgres获取上次更新ID

来自分类Dev

Postgres获取上次更新ID

来自分类Dev

尝试循环更新日期和时间

来自分类Dev

查找 IAM 角色上次使用日期

来自分类Dev

Java-如何从按上次修改日期排序的文件夹中打开上次更新的文件?

来自分类Dev

更新日期字段

来自分类Dev

尝试查找和自动更新日期时间字段时,SQLALchemy出现错误

Related 相关文章

  1. 1

    查找上次运行yum更新的时间

  2. 2

    查找上次更新的时间戳的更快方法

  3. 3

    使用Entity Framework 6属性,存储行创建日期和上次更新日期

  4. 4

    根据上次更新日期对记录数进行计数+空

  5. 5

    在 WordPress 中显示帖子的上次更新日期

  6. 6

    查找上次出现的href

  7. 7

    在Excel 2013中查找上次日期值?

  8. 8

    上次MS Office更新的日期?

  9. 9

    “上次更新日期...”的日期在本地预览中和部署时不同

  10. 10

    查找上次创建的记录 RSpec 测试

  11. 11

    pysftp:如何更新上次修改日期

  12. 12

    文件上次更新

  13. 13

    aws cli查询以查找上次拍摄的快照,拍摄的日期,使用的标签(如果有),实例的名称标签和实例ID

  14. 14

    查找日期文件上次修改

  15. 15

    Hive-如何为增量表跟踪和更新Hive中的上次修改日期?

  16. 16

    Hive-如何跟踪和更新增量表中Hive中的上次修改日期?

  17. 17

    Oracle SQL查询:查找上次更改数据的时间

  18. 18

    如何查找上次打开的工作簿的名称

  19. 19

    查找上次特定的Numpy数组具有值的时间

  20. 20

    如何查找特定字段的上次更新时间戳(ORACLE)

  21. 21

    在仪表板中添加“上次更新”的日期

  22. 22

    Laravel 5.5:成功登录时不会更新上次登录和上次登录 IP

  23. 23

    Postgres获取上次更新ID

  24. 24

    Postgres获取上次更新ID

  25. 25

    尝试循环更新日期和时间

  26. 26

    查找 IAM 角色上次使用日期

  27. 27

    Java-如何从按上次修改日期排序的文件夹中打开上次更新的文件?

  28. 28

    更新日期字段

  29. 29

    尝试查找和自动更新日期时间字段时,SQLALchemy出现错误

热门标签

归档