如何在子查询聚合中的最近时间记录的另一个表中查找记录

维农
select sl.*,

       (select pnd_invoiceno 
        from   PINVDET 
        where  PND_INVNO = sl.invno and

               abs(DATEDIFF(ss, pnd_date, sl.adjustedon)) = 
               (select min(abs(DATEDIFF(ss, pnd_date, sl.adjustedon)))
                from   PINVDET
                where  pnd_invno = sl.invno))

from   vwstocklog sl where sl.invno in (select invno from vwStockDiff) 
order  by sl.invno, sl.adjustedon

当我运行上面的查询时,我得到了错误:

在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中唯一引用的列。

我理解它是说,表达min(abs(DATEDIFF(ss, pnd_date, sl.adjustedon)))的问题,因为它引用sl.adjusted上的min()合计,而且不能这样做,除非它在聚集表达式中引用的唯一列。我不确定该如何解决它。

我在这里尝试做的是pnd_invoiceno在记录中找到pinvdet同一项目pnd_date最接近sl.adjustedon(并且我认识到这有可能链接到多个记录)。

关于如何调整此查询以实现该目标的任何想法?

劳伦斯

第二次尝试(先过滤):

With x as (
    select
        sl.invno,
        sl.adjustedon,
        p.pnd_invoiceno,
        rank() over (
            partition by sl.invno 
            order by abs(datediff(ss, p.pnd_date, sl.adjustedon))
       ) rk
    from
        vwstocklog sl 
            inner join
        pinvdet p
            on p.pnd_invno = sl.invno
    Where 
        Exists (
            Select
                'x'
            From
                vwStockDiff sd
            Where
                sl.invno = sd.invno
        )
)
Select
    x.invno,
    x.adjustedon,
    x.pnd_invoiceno
From
    x
Where
    x.rk = 1
order by 
    x.invno, 
    x.adjustedon

第一次尝试:

With x as (
    select
        sl.invno,
        sl.adjustedon,
        p.pnd_invoiceno,
        rank() over (
            partition by sl.invno 
            order by abs(datediff(ss, p.pnd_date, sl.adjustedon))
       ) rk
    from
        vwStockDiff sd
            inner join
        vwstocklog sl 
            on sl.invno = sd.invno
            inner join
        pinvdet p
            on p.pnd_invno = sl.invno
    )
Select
    x.invno,
    x.adjustedon,
    x.pnd_invoiceno
From
    x
Where
    x.rk = 1
order by 
    x.invno, 
    x.adjustedon

如果您碰巧有两次相等的距离,这将为两者返回一行。如果只喜欢1.,请替换rank()row_number()

SQLFiddle目前似乎无法正常工作,因此我无法对其进行测试。可能存在语法错误。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在查询中从另一个表中获取记录?

来自分类Dev

如何在另一个表中查找缺少属性 ID 的记录 ID

来自分类Dev

查找不在另一个表中的记录

来自分类Dev

在另一个表中查找丢失的记录

来自分类Dev

在主表中查找与SQL Server中另一个表中的记录匹配的记录

来自分类Dev

如何更新另一个表中的记录

来自分类Dev

如何查询另一个表中的上一条记录?

来自分类Dev

根据另一个表中值的存在排除聚合函数中的记录

来自分类Dev

实体框架查询-从另一个表中仅选择直到时间戳记的记录

来自分类Dev

从另一个表更新表中的记录

来自分类Dev

MySQL从一个表中查询最新记录,但从另一个表中查询顺序

来自分类Dev

MySQL查询可根据另一个表中的记录将记录插入表中

来自分类Dev

如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

来自分类Dev

从一个表中查找在另一个表的关联记录中没有特定字段值的记录的记录

来自分类Dev

查找不在另一个表中的多个字段上的记录

来自分类Dev

在oracle中查询以从一个表中获取多个记录并输入另一个表

来自分类Dev

如何考虑报告月份在另一个表中的条目,根据注册时间对记录进行分组?

来自分类Dev

如何在同一表中设置一个记录值等于另一个记录值

来自分类Dev

SQLite查询选择另一个表中不存在的所有记录

来自分类Dev

计算另一个表中记录数的查询

来自分类Dev

在odoo中如何在另一个模型中创建记录时如何在模型中创建记录

来自分类Dev

在odoo中如何在另一个模型中创建记录时如何在模型中创建记录

来自分类Dev

在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

来自分类Dev

SQL:如何根据另一个表中的值查询一个表中是否存在记录

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

如何在winforms中通过c#从一个表中获取所有记录并将其保存在另一个表中?

来自分类Dev

如何查找记录并将它们附加到另一个文件中

Related 相关文章

  1. 1

    如何在查询中从另一个表中获取记录?

  2. 2

    如何在另一个表中查找缺少属性 ID 的记录 ID

  3. 3

    查找不在另一个表中的记录

  4. 4

    在另一个表中查找丢失的记录

  5. 5

    在主表中查找与SQL Server中另一个表中的记录匹配的记录

  6. 6

    如何更新另一个表中的记录

  7. 7

    如何查询另一个表中的上一条记录?

  8. 8

    根据另一个表中值的存在排除聚合函数中的记录

  9. 9

    实体框架查询-从另一个表中仅选择直到时间戳记的记录

  10. 10

    从另一个表更新表中的记录

  11. 11

    MySQL从一个表中查询最新记录,但从另一个表中查询顺序

  12. 12

    MySQL查询可根据另一个表中的记录将记录插入表中

  13. 13

    如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

  14. 14

    从一个表中查找在另一个表的关联记录中没有特定字段值的记录的记录

  15. 15

    查找不在另一个表中的多个字段上的记录

  16. 16

    在oracle中查询以从一个表中获取多个记录并输入另一个表

  17. 17

    如何考虑报告月份在另一个表中的条目,根据注册时间对记录进行分组?

  18. 18

    如何在同一表中设置一个记录值等于另一个记录值

  19. 19

    SQLite查询选择另一个表中不存在的所有记录

  20. 20

    计算另一个表中记录数的查询

  21. 21

    在odoo中如何在另一个模型中创建记录时如何在模型中创建记录

  22. 22

    在odoo中如何在另一个模型中创建记录时如何在模型中创建记录

  23. 23

    在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

  24. 24

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

  25. 25

    SQL:如何根据另一个表中的值查询一个表中是否存在记录

  26. 26

    根据另一个表中的记录值将记录插入表中

  27. 27

    根据另一个表中记录的值将记录插入表中

  28. 28

    如何在winforms中通过c#从一个表中获取所有记录并将其保存在另一个表中?

  29. 29

    如何查找记录并将它们附加到另一个文件中

热门标签

归档