访问 - row_number 函数?

安迪K

我有这个查询,它给了我想要的结果 postgres

SELECT
  t.*,
  ROW_NUMBER() OVER (PARTITION BY t."Internal_reference", t."Movement_date" ORDER BY t."Movement_date") AS "cnt"
FROM (SELECT
  "Internal_reference",
  MAX("Movement_date") AS maxtime
FROM dw."LO-D4_Movements"
GROUP BY "Internal_reference") r
INNER JOIN dw."LO-D4_Movements" t
  ON t."Movement_date" = r.maxtime
  AND t."Internal_reference" = r."Internal_reference"

问题是我必须Access在分析函数不存在的地方翻译上面的查询......

我用这个答案来建立下面的查询

SELECT 
      t."Internal_reference",
      t.from_code,
      t.to_code,
      t."Movement_date",
      t.shipment_number,
      t."PO_number",
      t."Quantity",
      t."Movement_value",
      t."Site",
      t."Import_date",
  COUNT(*) AS "cnt"
 FROM (
      SELECT "Internal_reference",
      MAX("Movement_date") AS maxtime
      FROM dw."LO-D4_Movements"
      GROUP BY "Internal_reference") r
LEFT OUTER JOIN dw."LO-D4_Movements" t
        ON t."Movement_date" = r.maxtime AND t."Internal_reference" = r."Internal_reference"
GROUP BY
      t.from_code,
      t.to_code,
      t."Movement_date",
      t.shipment_number,
      t."PO_number",
      t."Quantity",
      t."Movement_value",
      t."Site",
      t."Import_date",
      t."Internal_reference" 
ORDER BY t.from_code    

问题是我只有1cnt列中。

我试图通过删除internal_reference(见下文)来调整它

SELECT 
      t.from_code,
      t.to_code,
      t."Movement_date",
      t.shipment_number,
      t."PO_number",
      t."Quantity",
      t."Movement_value",
      t."Site",
      t."Import_date",
  COUNT(*) AS "cnt"
 FROM (
      SELECT "Internal_reference",
      MAX("Movement_date") AS maxtime
      FROM dw."LO-D4_Movements"
      GROUP BY "Internal_reference") r
LEFT OUTER JOIN dw."LO-D4_Movements" t
        ON t."Movement_date" = r.maxtime AND t."Internal_reference" = r."Internal_reference"
GROUP BY
      t.from_code,
      t.to_code,
      t."Movement_date",
      t.shipment_number,
      t."PO_number",
      t."Quantity",
      t."Movement_value",
      t."Site",
      t."Import_date" 
ORDER BY t.from_code    

然而,结果更糟。cnt不断增长,但它给我的错cnt

任何帮助都非常受欢迎,因为我正在慢慢失去理智。

谢谢


编辑:请找到sqlfiddle

史蒂夫·洛弗尔

我认为 Gordon-Linoff 的代码接近你想要的,但有一些错别字我不能不重写就更正,所以这是我的尝试

SELECT
    t1.Internal_reference,
    t1.Movement_date,
    t1.PO_Number as Combination_Of_Columns_Which_Make_This_Unique,
    t1.Other_columns,
    Count(1) AS Cnt
FROM
    ([LO-D4_Movements] AS t1
    INNER JOIN [LO-D4_Movements] AS t2 ON
        t1.Internal_reference = t2.Internal_reference AND
        t1.Movement_date = t2.Movement_date)
    INNER JOIN (
        SELECT
            t3.Internal_reference,
            MAX(t3.Movement_date) AS Maxtime
        FROM
            [LO-D4_Movements] AS t3
        GROUP BY
            t3.Internal_reference
            )  AS r ON
        t1.Internal_reference = r.Internal_reference AND
        t1.Movement_date = r.Maxtime
WHERE  
    t1.PO_Number>=t2.PO_Number
GROUP BY
    t1.Internal_reference,
    t1.Movement_date,t1.PO_Number,
    t1.Other_columns
ORDER BY
    t1.Internal_reference,
    t1.Movement_date,
    Count(1);

除了max(movement_date)子查询内,主表被带入两次。一个版本用于在您的结果中显示,另一个版本用于计算记录以生成序列号。

Gordon 说你需要为每一行一个唯一的 id 列。如果“列”的意思是还包括派生列,那就是对的。此外,它只需要在“internal_reference”和“Movement_date”的任意组合中是唯一的。

我可能错误地假设 PO_Number 就足够了。如果没有,请与该(和一些分隔符)其他字段连接,这将使其独一无二。需要对where子句进行更新,以比较t1和t2的“使此唯一的列组合”。

如果没有合适的组合可用,我不确定它可以在没有 The-Gambill 建议的 VBA 和/或临时表的情况下完成。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Row_number函数和变量

来自分类Dev

LINQ使用ROW_NUMBER()函数吗?

来自分类Dev

MS Access替代SQL函数ROW_NUMBER()

来自分类Dev

使用ROW_NUMBER函数选择最后一行

来自分类Dev

如何使用条件和PARTITION BY制作ROW_NUMBER()函数?

来自分类Dev

使用ROW_NUMBER()窗口函数选择行

来自分类Dev

将ROW_NUMBER()与聚合函数一起使用

来自分类Dev

ROW_NUMBER()和BigQuery中的数学函数

来自分类Dev

访问查询,在T-SQL中产生类似ROW_NUMBER()的结果

来自分类Dev

访问查询,在T-SQL中生成类似ROW_NUMBER()的结果

来自分类Dev

删除SAS中类似ROW_NUMBER()函数的SAS中的重复项

来自分类Dev

PostgreSQL窗口函数:row_number()以上(由col2划分col顺序)

来自分类Dev

如何在ROW_NUMBER()函数和联合中获取过滤器记录?

来自分类Dev

SQL从row_number Over()函数获取2位数字

来自分类Dev

使用postgres row_number()窗口函数获取最后一行

来自分类Dev

在不使用ROW_NUMBER()函数的情况下删除重复的记录

来自分类Dev

如何在R函数中使row_number()和quosures一起工作?

来自分类Dev

在Hive的row_number()中按窗口函数按分区自定义排序

来自分类Dev

如何使用MySql数据库替换ROW_NUMBER()函数?

来自分类Dev

带有Progress MongoDB JDBC驱动程序的ROW_NUMBER函数

来自分类Dev

ROW_NUMBER() OVER 函数没有遍历所有记录

来自分类Dev

Redshift:row_number 函数按降序排列数量,将值以 0 排序为 1

来自分类Dev

读取row_number

来自分类Dev

ROW_NUMBER 性能

来自分类Dev

从嵌套函数访问函数属性

来自分类Dev

函数中的JavaScript访问函数

来自分类Dev

从嵌套函数访问函数属性

来自分类Dev

从函数内部访问变量

来自分类Dev

从函数(结构)访问var

Related 相关文章

  1. 1

    Row_number函数和变量

  2. 2

    LINQ使用ROW_NUMBER()函数吗?

  3. 3

    MS Access替代SQL函数ROW_NUMBER()

  4. 4

    使用ROW_NUMBER函数选择最后一行

  5. 5

    如何使用条件和PARTITION BY制作ROW_NUMBER()函数?

  6. 6

    使用ROW_NUMBER()窗口函数选择行

  7. 7

    将ROW_NUMBER()与聚合函数一起使用

  8. 8

    ROW_NUMBER()和BigQuery中的数学函数

  9. 9

    访问查询,在T-SQL中产生类似ROW_NUMBER()的结果

  10. 10

    访问查询,在T-SQL中生成类似ROW_NUMBER()的结果

  11. 11

    删除SAS中类似ROW_NUMBER()函数的SAS中的重复项

  12. 12

    PostgreSQL窗口函数:row_number()以上(由col2划分col顺序)

  13. 13

    如何在ROW_NUMBER()函数和联合中获取过滤器记录?

  14. 14

    SQL从row_number Over()函数获取2位数字

  15. 15

    使用postgres row_number()窗口函数获取最后一行

  16. 16

    在不使用ROW_NUMBER()函数的情况下删除重复的记录

  17. 17

    如何在R函数中使row_number()和quosures一起工作?

  18. 18

    在Hive的row_number()中按窗口函数按分区自定义排序

  19. 19

    如何使用MySql数据库替换ROW_NUMBER()函数?

  20. 20

    带有Progress MongoDB JDBC驱动程序的ROW_NUMBER函数

  21. 21

    ROW_NUMBER() OVER 函数没有遍历所有记录

  22. 22

    Redshift:row_number 函数按降序排列数量,将值以 0 排序为 1

  23. 23

    读取row_number

  24. 24

    ROW_NUMBER 性能

  25. 25

    从嵌套函数访问函数属性

  26. 26

    函数中的JavaScript访问函数

  27. 27

    从嵌套函数访问函数属性

  28. 28

    从函数内部访问变量

  29. 29

    从函数(结构)访问var

热门标签

归档