需要在Access 2016中创建子查询,以提供明确的计数

时间:2017-06-08 13:51:02

标签: sql ms-access ms-access-2016

所以我正在尝试创建一个查询,它将返回学生从我们的食品柜中取出的食物的总重量(我在大学食品柜中工作),我能够得到它给我所有的总数我需要除了一些不同的学生进来之外。基本上,我需要它来给我一些不同的学生,而不是现在给我的交易数量。那里的任何人都知道如何解决它?目前的代码如下:

Student_ID是我需要子查询的字段,如果我是正确的......

SELECT DISTINCTROW 
    Format$([Transaction Table].[Date],'mmmm yyyy') AS [Month], 
    Sum([Transaction Table].Weight) AS [Total Weight], 
    Count(*) AS [Total Transaction], 
    Count([Transaction Table].Student_ID) AS [Unique Customers]
FROM [Transaction Table]
GROUP BY 
    Format$([Transaction Table].[Date],'mmmm yyyy'), 
    Year([Transaction Table].[Date])*12+DatePart('m',[Transaction Table].[Date])-1;

2 个答案:

答案 0 :(得分:0)

如果您只想要每个日期的不同学生人数,您可以使用以下内容:

SELECT Count(Student_ID) As StudentCount, ShortDate
FROM 
   (SELECT Student_ID, Format$([Date], "Short Date") As ShortDate
    FROM [Transaction Table] 
    GROUP BY Student_ID, Format$([Date], "Short Date"))
GROUP BY ShortDate

然后你可以加入日期。

然而,在一个语句中执行它将很困难,因为Access不喜欢嵌套的子查询。

答案 1 :(得分:0)

我明白了!我的问题是我试图将所有月份字段链接在一起。我需要做的是创建两个查询,首先按月计算不同的客户,另一个查询以获得交易数量和每月的权重,然后编写最终查询以合并我需要的所有字段。固定代码如下:

交易计数查询:

textView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.your_image, 0, 0);
textView.setCompoundDrawablePadding(10);

唯一客户计数查询:

SELECT DISTINCTROW 
    Format$([Transaction Table].[Date],'mm/yyyy') AS [Month],
    Sum([Transaction Table].Weight) AS [Total Weight], 
    Count(*) AS [Total Transactions]
FROM [Transaction Table]
GROUP BY 
    Format$([Transaction Table].[Date],'mm/yyyy'), 
    Year([Transaction Table].[Date])*12+DatePart('m',[Transaction Table].[Date])-1;

结合前两个结果的最终查询:

SELECT DISTINCTROW 
    [Month], 
    Count(ID) AS [Unique Customers]
FROM
    (SELECT DISTINCT 
        [Student_ID] AS ID, 
        Format$([Date],'mm/yyyy') AS [Month] 
    FROM [Transaction Table])  AS [%$##@_Alias]
GROUP BY 
    [Month], 
    Year([Month])*12+DatePart('m',[Month])-1;