【问题标题】:access query to filter and combine count访问查询以过滤和组合计数
【发布时间】:2009-11-13 11:33:28
【问题描述】:

我有两个访问表

tableA

num  count
1    7
2    8
3    9
4    9
5    13
6    6


tableB

num  count
0    1
1    14
2    12
3    5
4    5
5    11
6    5

我如何创建一个访问查询,该查询将忽略两个表中任何一个中计数小于 6 的数字。即 0,3,4 & 6 并创建一个表格,其余数字按组合计数排序

tableC

num    count
5      24
1      21
2      20

任何帮助表示赞赏

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    也许……

    SELECT a.num, a.count + b.count
    FROM   tableA a
    JOIN   tableB b on b.num = a.num
    WHERE  a.count >= 6 
    AND    b.count >= 6
    

    这将包括 A 和 B 中的数字。要包括一个表中而不是另一个表中的 count >= 6 的数字,您必须为 a.count 添加一个 Join 和一个“isnull”和 b.count 值。 IE; isnull(a.count,0) + isnull(b.count,0)

    【讨论】:

    • re isnull 的东西...不过你需要左/右/完全连接
    【解决方案2】:

    你可以试试这样的

    SELECT DISTINCT tableA.num, [tableA].[val]+[tableB].[val] AS Expr1
    FROM tableA INNER JOIN tableB ON tableA.num = tableB.num
    WHERE (((tableA.val)>=6) AND ((tableB.val)>=6));
    
    【解决方案3】:

    怎么样

    SELECT x.Num, x.Count FROM (
      SELECT Num, Count(*) 
      FROM tableA
      GROUP BY Num
      HAVING Count(*)>6
    
      UNION ALL
    
      SELECT Num, Count(*) 
      FROM tableB
      GROUP BY Num
      HAVING Count(*)>6) x
    

    或者如果 count 是一个字段,而不是一个计算:

    SELECT x.Num, x.Count FROM (
      SELECT Num, Count
      FROM tableA
      WHERE Count>6
    
      UNION ALL
    
      SELECT Num, Count
      FROM tableB
      WHERE Count>6) x
    

    【讨论】:

    • 你把计数操作符和他的计数列搞混了
    • 是的,我注意到了,并且在您发布时正在纠正这个问题,我认为 :)
    • 我仍然认为需要一个 UNION 查询。
    • 改变了我的想法。他想根据 num 合并两个表中的计数。
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2023-02-26
    • 2015-09-22
    • 2014-03-12
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多