【问题标题】:Update Query in SQL with numeric pattern in MS Access在 MS Access 中使用数字模式更新 SQL 中的查询
【发布时间】:2012-08-01 08:12:36
【问题描述】:

大家好,

在创建对我的数据进行分组的更新查询方面需要帮助。

我的表中的数据实际上是空间数据,可以认为是一个 10 列 x 5 行的矩阵。我有 ObjectID、Row 和 Column,但我想要列 DesiredResult,它是行和列的 2x2 分组。

因此,1,1 1,2、2,1 和 2,2 的 R,C 的 DesiredResult 将为 1,而 1,3 1,4 2,3 2,4 的 DesiredResult 将为 2等等(参见下面的示例)....

我能够使用 Quotient 和 Mod 的组合创建 R 和 C 列,所以我假设我会做类似的事情,但我被卡住了。我将如何在 MS Access 中进行此查询?

 ObjectID   R   C   DesiredResult
 1            1 1   1
 2            1 2   1
 3            1 3   2
 4            1 4   2
 5            1 5   3
 6            1 6   3
 7            1 7   4
 8            1 8   4
 9            1 9   5
 10           1 10  5
 11           2 1   1
 12           2 2   1
 13           2 3   2
 14           2 4   2
 15           2 5   3
 16           2 6   3
 17           2 7   4
 18           2 8   4
 19           2 9   5
 20           2 10  5
 21           3 1   6
 22           3 2   6
 23           3 3   7
 24           3 4   7
 25           3 5   8
 26           3 6   8
 27           3 7   9
 28           3 8   9
 29           3 9   10
 30           3 10  10
 31           4 1   6
 32           4 2   6
 33           4 3   7
 34           4 4   7
 35           4 5   8
 36           4 6   8
 37           4 7   9
 38           4 8   9
 39           4 9   10
 40           4 10  10
 41           5 1   11
 42           5 2   11
 43           5 3   12
 44           5 4   12
 45           5 5   13
 46           5 6   13
 47           5 7   14
 48           5 8   14
 49           5 9   15
 50           5 10  15

【问题讨论】:

    标签: sql ms-access pattern-matching


    【解决方案1】:

    类似...?

    SELECT a.Row, a.Col, Col\2 AS D1, Col Mod 2 AS D2, [D1]+[D2] AS Desired
    FROM  table  AS a
    ORDER BY a.Row, a.Col;
    

    【讨论】:

    • 嗨 Remou,嗯。问题是在我的真实表中,有 430 列!有什么想法可以概括它吗?
    • 不在 Access 中没有 430 列,最大列数为 255。您提到 10 x 5 的网格,如果这不是您的设置,您应该提供更准确的描述.例如,在 MS Access 中,column 被用作 field 的同义词,column 对您意味着什么?你的架构是什么?
    • 啊——你误会了。我实际上并没有创建一个新列,而是将结果值保存到一个名为 DesiredResult 的列中。因为我的原始表中有 430 列,所以这个值应该在 1-215 之间。
    • 你原来的桌子在哪里?如果您查看here,您将看到 MS Access 中的最大字段(列)数为 255。请发布您的表架构。
    • 感谢您的帮助!我说错了(我猜是打错了)。数据被组织成三列(见上文),分别称为 ObjectID、Row、Column,Row 中的值表示数据集的行数,Column 中的值表示 列数。获得 DesiredResult 列后,我将使用 ObjectID 和我的 GIS 上的连接来处理 DesiredResult 列。
    【解决方案2】:

    Remou 有一个接近的近似值,但事实证明这给了我我需要的东西。我需要行索引和列索引。

     SELECT ObjectID, R, C, 
       Int(([C]-1)/2) AS ColIndex,
       Int(([R]-1)/2) AS RowIndex, 
       [RowIndex]*5+[ColIndex]+1 AS DesiredResult
     FROM Testing
     ORDER BY ObjectID
    

    查询中的关键是Column & Row Index(即分组大小)中都有数字2,而数字5用于Desired Result,表示行单元格的数量。

    谢谢!

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2018-06-14
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2013-09-05
      相关资源
      最近更新 更多