具有特定值的行之前的 JOIN 最后(最大)行中的 SQL SELECT

韦利科

我有表 T1:

TICKETID
1
2
3

我有T2桌

ID  TICKETID  DESCRIPTION
1   1         First
2   2         Second
3   2         Automatic

我想加入这些表(SELECT 必须从 T1 表开始)并在 Automatic 值之前提取 Last description 值(例如,因为 Automatic 值用于 TICKETID 2,它意味着 MAXIMUM ID(即 3)之前的最后一个值,这意味着应提取 TICKETID 2 的值 Second)。对于 TICKETID 1 和 TICKETID,由于自动值不存在,它将具有空值。

所以最后的结果应该是

1 null
2 Second
3 null

我试过这样:

    select t11.ticketid, t21.description
    from t1 as t11
    left outer join t2 as t21 on t21.ticketid=t11.ticketid 
    left outer join
    (
    select t12.ticketid, max(t22.id) as maxwl from t2 as t22
    inner join t1 as t12 on t12.ticketid=t22.ticketid and t22.ticketid in 
    (select t23.ticketid from t2 as t23 inner join 
t1 as t13 on t13.ticketid=t23.ticketid and t23.description='Automatic')
    and t22.description!='Automatic'
    group by t12.ticketid
    ) as t24 on t22.maxwl=t21.id

然后我得到了结果:

1 First
2 Second
3 null

这是错误的,因为 TICKETID 1 的值必须为 Null,因为它没有值为 Automatic 的描述。

亚历克斯

应该是这样的。您只需要在加入前检查两个条件。但这并不是最佳选择,因为您阅读了同一个表 3

select t11.ticketid, t21.description
from t1 as t11

left outer join 
    (   select * 
        from t2 as t22
        where exists 
            (   select max(t23.id) as maxid, t23.ticketid
                from t2 as t23
                where t23.description <> 'Automatic'
                    and t22.ticketid = t23.ticketid
                            and exists 
                            (   select max(t24.id) as max_aut_id, t24.ticketid
                                from t2 as t24 
                                where t24.description = 'Automatic' 
                                    and t23.ticketid = t24.ticketid
                                group by t24.ticketid
                                having t23.id < max_aut_id)
                group by t23.ticketid
                having maxid = t22.id)
    ) as t21 
    on t21.ticketid = t11.ticketid

更新:已修复,因此它将是自动之前的最新版本,而不仅仅是最新的非自动版本。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有最大日期的SQL SELECT行

来自分类Dev

SQL Server:CASE忽略SELF JOIN中具有NULL值的行

来自分类Dev

SQL返回列中具有最大值(在特定范围内)的行

来自分类Dev

很少有嵌套JOIN的SQL SELECT

来自分类Dev

带有INNER JOIN的SQL SELECT错误

来自分类Dev

从SELECT中排除具有特定列值的行

来自分类Dev

从SELECT中排除具有特定列值的行

来自分类Dev

SQL查询删除具有特定值的所有行?

来自分类Dev

SQL SELECT 和 JOIN

来自分类Dev

Oracle SQL请求-SELECT中的SELECT具有MAX值

来自分类Dev

SQL SELECT列上具有MAX值的行,并返回所有列

来自分类Dev

无法在具有COUNT和3个JOIN(4个表)的SQL查询中获取零值的行

来自分类Dev

SQL:选择具有特定值的行,而与列无关

来自分类Dev

SQL:选择在特定列中具有特定值的帐户的所有行

来自分类Dev

在特定列SQL Server中选择具有最大值的行

来自分类Dev

SQL:如何找到具有最大数量的特定值的行

来自分类Dev

JOIN中的SQL CASE返回额外的行

来自分类Dev

需要了解 SQL SELECT 中特定的 LEFT OUTER JOIN 行为

来自分类Dev

SQL选择一行中具有最大值的行

来自分类Dev

从一个SELECT查询到第二个SELECT查询的SQL SERVER JOIN ID行

来自分类Dev

用于确定行组在特定列中是否具有特定值的 SQL 查询

来自分类Dev

Rails:如何使用select方法在模型行中获取具有特定值的项目

来自分类Dev

PHP / MySQL排序时,SELECT结果中的某些行的特定列具有不同的值

来自分类Dev

SQL JOIN-为每个表A返回一行,无论表B是否具有值

来自分类Dev

C#中的SQL查询错误:使用SELECT JOIN WHERE OR

来自分类Dev

如何用3个JOIN在JPA中编写SQL SELECT?

来自分类Dev

SQL INNER JOIN-连接中的列名也位于select * error *

来自分类Dev

sql-选择在特定列中具有不同值的行

来自分类Dev

在SQL表中查找具有值列的特定部分的行

Related 相关文章

  1. 1

    具有最大日期的SQL SELECT行

  2. 2

    SQL Server:CASE忽略SELF JOIN中具有NULL值的行

  3. 3

    SQL返回列中具有最大值(在特定范围内)的行

  4. 4

    很少有嵌套JOIN的SQL SELECT

  5. 5

    带有INNER JOIN的SQL SELECT错误

  6. 6

    从SELECT中排除具有特定列值的行

  7. 7

    从SELECT中排除具有特定列值的行

  8. 8

    SQL查询删除具有特定值的所有行?

  9. 9

    SQL SELECT 和 JOIN

  10. 10

    Oracle SQL请求-SELECT中的SELECT具有MAX值

  11. 11

    SQL SELECT列上具有MAX值的行,并返回所有列

  12. 12

    无法在具有COUNT和3个JOIN(4个表)的SQL查询中获取零值的行

  13. 13

    SQL:选择具有特定值的行,而与列无关

  14. 14

    SQL:选择在特定列中具有特定值的帐户的所有行

  15. 15

    在特定列SQL Server中选择具有最大值的行

  16. 16

    SQL:如何找到具有最大数量的特定值的行

  17. 17

    JOIN中的SQL CASE返回额外的行

  18. 18

    需要了解 SQL SELECT 中特定的 LEFT OUTER JOIN 行为

  19. 19

    SQL选择一行中具有最大值的行

  20. 20

    从一个SELECT查询到第二个SELECT查询的SQL SERVER JOIN ID行

  21. 21

    用于确定行组在特定列中是否具有特定值的 SQL 查询

  22. 22

    Rails:如何使用select方法在模型行中获取具有特定值的项目

  23. 23

    PHP / MySQL排序时,SELECT结果中的某些行的特定列具有不同的值

  24. 24

    SQL JOIN-为每个表A返回一行,无论表B是否具有值

  25. 25

    C#中的SQL查询错误:使用SELECT JOIN WHERE OR

  26. 26

    如何用3个JOIN在JPA中编写SQL SELECT?

  27. 27

    SQL INNER JOIN-连接中的列名也位于select * error *

  28. 28

    sql-选择在特定列中具有不同值的行

  29. 29

    在SQL表中查找具有值列的特定部分的行

热门标签

归档