计算Access中一个表中出现的行数

时间:2012-07-06 10:48:33

标签: sql count subquery ms-access-2003

我想显示名称出现在Access 2003表的字段中的次数。这是表结构和内容:

我使用了这个例子here

TABEL:

     1  - Name1   
     1  - Name2
     2  - Name1
     2  - Name3
     3  - Name1
     3  - Name2

结果

    Name1 - 3
    Name2 - 2
    Name3 - 1

这是我的代码

SELECT DISTINCT [tbl funktietitels].persoon, 

           [tbl funktietitels].funktiecode, [tbl funktietitels].funktietitel, [tbl funktietitels].userID, [tbl funktietitels].adres, [tbl funktietitels].dept, EXISTS
           (
               SELECT  [tbl funktietitels].funktiecode, COUNT([tbl funktietitels].funktiecode)
               FROM    [tbl funktietitels] 
               GROUP BY [tbl funktietitels].funktiecode 
           ) AS 'AMOUNT'
FROM ([tbl goedkeuring]

          INNER JOIN [tbl funktietitels] ON [tbl goedkeuring].goedk1 = [tbl funktietitels].funktiecode) 
          INNER JOIN [tbl doc] ON [tbl goedkeuring].volgnummer = [tbl doc].goedID


WHERE ((([tbl goedkeuring].bevestiging)=False));

显示为结果:

  persoon   funktiecode   funktietitel     userID   adres   dept    'AMOUNT'
Name, Name2 DLB          King of the sea       JGO            LOG      �

如何计算字段在表格中出现的次数?

2 个答案:

答案 0 :(得分:0)

我认为你想要一个代码与主表相同的计数。此示例将[tbl funktietitels]别名为t和f。

SELECT DISTINCT f.persoon, 
          f.funktiecode, 
          f.funktietitel, 
          f.userID, 
          f.adres, 
          f.dept, 
           (
               SELECT  COUNT(t.funktiecode)
               FROM    [tbl funktietitels] t
               WHERE   t.funktiecode = f.funktiecode
           ) AS 'AMOUNT'
       FROM ([tbl goedkeuring]
       INNER JOIN [tbl funktietitels] f 
          ON [tbl goedkeuring].goedk1 = f.funktiecode) 
       INNER JOIN [tbl doc] 
          ON [tbl goedkeuring].volgnummer = [tbl doc].goedID
       WHERE ((([tbl goedkeuring].bevestiging)=False));

答案 1 :(得分:0)

我提出的解决方案:

    SELECT DISTINCT [tbl funktietitels].persoon, 
           [tbl goedkeuring].goedk1, 
           [tbl goedkeuring].db_user

             (SELECT  count(*)
              FROM  [tbl goedkeuring]
              WHERE [tbl goedkeuring].goedk1 = [tbl funktietitels].funktiecode
                     AND ((([tbl goedkeuring].bevestiging)=False))
             ) AS aantal

  FROM [tbl goedkeuring] 
       INNER JOIN [tbl funktietitels] 
           ON [tbl goedkeuring].goedk1 = [tbl funktietitels].funktiecode;