【问题标题】:Count Unique Dates in Relation to Another Field计算与另一个字段相关的唯一日期
【发布时间】:2018-07-18 13:12:09
【问题描述】:

我在一个字段中有一个成员标识符参考号,在另一个字段中有一个日期。

数据库包含成员标识符出现多次的行。对于可以有多个记录(行)的给定成员,日期有时相同,有时不同。

我想统计成员中唯一日期实例的数量。

  • 如果一个成员有 3 条记录并且它们都具有相同的日期,我希望查询返回值 1。

  • 如果一个成员有三条记录,两条是 01/01/2005,第三条是 10/06/2003,我希望查询返回值 2。

  • 如果一个成员有三个记录和三个不同的日期,我希望查询返回值 3。

【问题讨论】:

    标签: ms-access unique


    【解决方案1】:

    你可以使用:

    Select MemberID, Count(*) As DateCount
    From (Select Distinct MemberID, DateField From YourTable)
    Group By MemberID
    

    【讨论】:

      【解决方案2】:

      您想要的是一个带有聚合函数 COUNT... 的 GROUP BY 子句,但在使用 SELECT DISTINCT 首先获取唯一用户 ID/日期组合的子查询上。

      有了这个记录集:

      您可以使用查询设计器进行两个查询,第一个是:

      第二个,它使用您创建的第一个查询,是:

      要得到你想要的输出:

      或者,如果您像我一样喜欢使用原始 SQL,您可以在单个查询中使用此 SQL:

      SELECT DistinctDates.UserID, Count(DistinctDates.TheDate) AS NumDates
      FROM (SELECT DISTINCT Table1.UserID, Table1.TheDate FROM Table1) AS DistinctDates
      GROUP BY DistinctDates.UserID;
      

      还有一点我想特别指出,我刚刚从W3Schools's SQL SELECT DISTINCT Statement 页面了解到,大多数其他RDBMS 引擎可能允许您在查询中的字段上使用DISTINCT。但是,MSAccess/Jet 引擎不支持该语法。如果您在任何时候都在另一个数据库引擎中,您可以这样做:

      SELECT Table1.UserID, COUNT(DISTINCT Table1.TheDate) AS NumDates FROM Table1;
      

      【讨论】:

      • 感谢您的建议,这让我朝着我想要的方向前进,但并不完全是我正在寻找的方向 - 而不是我正在寻找的 ID 不止一行一行,以及唯一日期的计数,因此在上面的示例中,UserID“1”的计数为 2,而 UserID“2”和“3”的计数分别为 3。
      猜你喜欢
      • 1970-01-01
      • 2016-07-14
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多