当字段相同时增加值

时间:2015-03-05 11:19:22

标签: sql ms-access access-vba

首先,我很抱歉这个含糊不清的标题。 这是我的问题: 我使用的是Access,我有这张表:

+--------+-----------+
| PARENT | CHILD     |
+--------+-----------+
| JOHN   | TANIA     |
| JOHN   | ROBERT    |
| JOHN   | APRIL     |
| HELEN  | TOM       |
| HELEN  | GABRIELLE |
+--------+-----------+

我想在查询或VBA代码中添加这样的列:

+--------+-----------+---------+
| PARENT | CHILD     | LIST    |
+--------+-----------+---------+
| JOHN   | TANIA     | CHILD 1 |
| JOHN   | ROBERT    | CHILD 2 |
| JOHN   | APRIL     | CHILD 3 |
| HELEN  | TOM       | CHILD 1 |
| HELEN  | GABRIELLE | CHILD 2 |
+--------+-----------+---------+

我想这样做,因为最后,我想运行一个交叉表查询。我只是错过了创建该查询的最后一列。

  1. 我尝试在记录集中执行此操作,但是我的数据库在几次rst.Update(我有700k +行)之后开始膨胀

  2. 我创建了一个临时表并使用了UPDATE查询,但这只需要太多时间。

  3. 我认为可能有一个SQL代码可以满足我的需求,但我无法弄明白。我希望你能帮助我,谢谢:)。

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作,但使用某种ID会更好:

SELECT Parent.PARENT, 
     Parent.CHILD, 
    (SELECT Count(*) 
     FROM Parent p 
     WHERE p.Parent=Parent.Parent 
     AND p.Child<=Parent.Child) AS ChildNo
FROM Parent
ORDER BY Parent.PARENT, Parent.CHILD;

Parent是表的名称。

query result