SQL Server - 如何从多个表中获取每个组的最新更新

根据

例如,我有 3 个表:

tbl_main
-------------------------
|ID_No |Info1   |Info2  |
|------+--------+-------|
|00123 |name1   |a city |
|00567 |name2   |b city |
|00789 |name3   |c city |
-------------------------

tbl_version
--------------------------------
|ID_No |Version_Name|Version_No|
|------+------------+----------|
|00123 |version_a_01|1         |
|00567 |version_b_01|1         |
|00789 |version_c_01|1         |
--------------------------------

tbl_version_upd
--------------------------------
|ID_No |Version_Name|Version_No|
|------+------------+----------|
|00123 |version_a_02|2         |
|00123 |version_a_03|2         |
|00123 |version_a_04|4         |
|00789 |version_c_02|2         |
--------------------------------

我想根据 tbl_version 和 tbl_version_upd 中的 Version_No 获取每个 ID_No 的最新 Version_Name。

Wanted output:
--------------------------------------
|ID_No |Info1   |Info2  |Version_Name|
|------+--------+-------+------------|
|00123 |name1   |a city |version_a_04|
|00567 |name2   |b city |version_b_01|
|00789 |name3   |c city |version_c_02|
--------------------------------------

目前,我有这个查询:

Select a.ID_No, a.Info1, a.Info2, b.Version_Name
FROM tbl_main a
LEFT JOIN (tbl_version UNION ALL tbl_version_upd) b ON a.ID_No=b.ID_No

但它获取每个 ID_No 的所有版本

Current output:
--------------------------------------
|ID_No |Info1   |Info2  |Version_Name|
|------+--------+-------+------------|
|00123 |name1   |a city |version_a_01|
|00123 |name1   |a city |version_a_02|
|00123 |name1   |a city |version_a_03|
|00123 |name1   |a city |version_a_04|
|00567 |name2   |b city |version_b_01|
|00789 |name3   |c city |version_c_01|
|00789 |name3   |c city |version_c_02|
--------------------------------------
丹尼尔·布鲁赫拉

apply 是获得它的好方法,我也使用 CTE 作为联合,但只是为了可读性,子查询也能工作

;WITH allversions AS (
    SELECT ID_No, Version_Name, Version_No
    FROM tbl_version
    UNION ALL 
    SELECT ID_No, Version_Name, Version_No
    FROM tbl_version_upd
)
SELECT a.ID_No, a.Info1, a.Info2, b.Version_Name
FROM tbl_main a
OUTER APPLY (
    SELECT TOP 1 Version_Name 
    FROM allversions av
    WHERE av.ID_No = a.ID_No
    ORDER BY Version_No DESC
) b

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新 SQL Server 中的多个表

来自分类Dev

SQL Server 2008如何从多个表中获取最高记录

来自分类Dev

从表SQL Server中的每个列获取每个值的计数

来自分类Dev

SQL Server中多个表的最新日期和价格

来自分类Dev

获取SQL Server中多个项目的最新记录

来自分类Dev

获取SQL Server中多个项目的最新记录

来自分类Dev

如何使用最新记录更新SQL Server表

来自分类Dev

组SQL Server中的最新条目

来自分类Dev

SQL Server bacpac在最新更新中本地导入失败(只能在SQL Server企业版中执行在线索引操作)

来自分类Dev

SQL Server中的多个更新

来自分类Dev

Transact SQL查询以显示每个任务的更新表的最新更新

来自分类Dev

跨两个表的SQL查询仅显示每个标记地址的最新更新结果

来自分类Dev

如何在SQL Server中获取最新和最近的值

来自分类Dev

从SQL Server中的多个表中按顺序获取行

来自分类Dev

从我的SQL Server 2012中的多个表中获取数据

来自分类Dev

SQL如何从Microsoft SQL Server查询文件中获取表?

来自分类Dev

SQL Server:从联接的表中更新多个记录

来自分类Dev

SQL Server:从联接的表中更新多个记录

来自分类Dev

更新 SQL Server 表时在 DbUpdateException 中获取 InvalidCastException

来自分类Dev

SQL Server 2012:如何从多个表联接中获取计数组

来自分类Dev

sql记录获取最新记录-SQL Server

来自分类Dev

如何从SQL Server中的表中获取行的索引?

来自分类Dev

SQL Server从多个表中检索数据

来自分类Dev

表中的SQL Server多个条件

来自分类Dev

在 SQL Server 中连接多个表

来自分类Dev

SQL Server-如何对多个表中的字段求和

来自分类Dev

如何在SQL Server表中插入多个值?

来自分类Dev

如何获取在SQL Server中存在多个类别的产品

来自分类Dev

如何获取在SQL Server中存在多个类别的产品

Related 相关文章

  1. 1

    更新 SQL Server 中的多个表

  2. 2

    SQL Server 2008如何从多个表中获取最高记录

  3. 3

    从表SQL Server中的每个列获取每个值的计数

  4. 4

    SQL Server中多个表的最新日期和价格

  5. 5

    获取SQL Server中多个项目的最新记录

  6. 6

    获取SQL Server中多个项目的最新记录

  7. 7

    如何使用最新记录更新SQL Server表

  8. 8

    组SQL Server中的最新条目

  9. 9

    SQL Server bacpac在最新更新中本地导入失败(只能在SQL Server企业版中执行在线索引操作)

  10. 10

    SQL Server中的多个更新

  11. 11

    Transact SQL查询以显示每个任务的更新表的最新更新

  12. 12

    跨两个表的SQL查询仅显示每个标记地址的最新更新结果

  13. 13

    如何在SQL Server中获取最新和最近的值

  14. 14

    从SQL Server中的多个表中按顺序获取行

  15. 15

    从我的SQL Server 2012中的多个表中获取数据

  16. 16

    SQL如何从Microsoft SQL Server查询文件中获取表?

  17. 17

    SQL Server:从联接的表中更新多个记录

  18. 18

    SQL Server:从联接的表中更新多个记录

  19. 19

    更新 SQL Server 表时在 DbUpdateException 中获取 InvalidCastException

  20. 20

    SQL Server 2012:如何从多个表联接中获取计数组

  21. 21

    sql记录获取最新记录-SQL Server

  22. 22

    如何从SQL Server中的表中获取行的索引?

  23. 23

    SQL Server从多个表中检索数据

  24. 24

    表中的SQL Server多个条件

  25. 25

    在 SQL Server 中连接多个表

  26. 26

    SQL Server-如何对多个表中的字段求和

  27. 27

    如何在SQL Server表中插入多个值?

  28. 28

    如何获取在SQL Server中存在多个类别的产品

  29. 29

    如何获取在SQL Server中存在多个类别的产品

热门标签

归档