MS Access 2013,如何在SQL中添加总计行

时间:2018-11-19 16:45:19

标签: sql ms-access

我需要一些帮助。我已经搜索了,但是找不到我想要的东西。我有一个学校招生要求我使用SQL。我有一个查询,该查询从两个表中提取了一些问题:

E tensorflow/core/framework/op_segment.cc:54] Create kernel failed: Not found: No registered 'NGraphVariable' OpKernel for GPU devices compatible with node {{node lstm_1/kernel}} = NGraphVariable[_class=["loc:@IsVariableInitialized"], container="", dtype=DT_FLOAT, just_looking=false, shape=[1,80], shared_name="", _device="/job:localhost/replica:0/task:0/device:GPU:0"]()
    .  Registered:  device='CPU'

我需要在底部添加一个SELECT Course.CourseNo, Course.CrHrs, Sections.Yr, Sections.Term, Sections.Location FROM Course INNER JOIN Sections ON Course.CourseNo = Sections.CourseNo WHERE Sections.Term="spring"; 行以计算Totals并求和CourseNo。由于我需要粘贴代码,因此必须通过SQL查询设计来完成。我知道可以通过数据表视图完成操作,但她不会接受。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

要实现此目的,您可以将查询与聚合查询结合在一起。从您的问题尚不清楚,您尝试从哪个列中获取“总计”,但这是一个示例,它说明了我使用查询并获取每个计数的含义(有点无用的示例-但您应该能够将其应用于您的查询)在做):

SELECT
      [Course].[CourseNo]
    , [Course].[CrHrs]
    , [Sections].[Yr]
    , [Sections].[Term]
    , [Sections].[Location]
FROM
    [Course]
    INNER JOIN [Sections] ON [Course].[CourseNo] = [Sections].[CourseNo]
WHERE  [Sections].[Term] = [spring]
UNION ALL
SELECT
      "TOTALS"
    , SUM([Course].[CrHrs])
    , count([Sections].[Yr])
    , Count([Sections].[Term])
    , Count([Sections].[Location])
FROM
    [Course]
    INNER JOIN [Sections] ON [Course].[CourseNo] = [Sections].[CourseNo]
WHERE  [Sections].[Term] = “spring”

答案 1 :(得分:0)

您可以分别准备“总计”查询,然后将两个查询结果与“ UNION”一起输出。 它可能看起来像:

SELECT Course.CourseNo, Course.CrHrs, Sections.Yr, Sections.Term, Sections.Location
FROM Course 
INNER JOIN Sections ON Course.CourseNo = Sections.CourseNo
WHERE Sections.Term="spring"
UNION
SELECT "Total", SUM(Course.CrHrs), SUM(Sections.Yr), SUM(Sections.Term), SUM(Sections.Location)
FROM Course 
INNER JOIN Sections ON Course.CourseNo = Sections.CourseNo
WHERE Sections.Term="spring";

答案 2 :(得分:0)

虽然您当然可以union将汇总查询查询到原始查询的末尾,但我认为这确实是一种不良做法,并且对于任何实际应用程序都是不希望的。

考虑到结果查询不能再用于数据的任何有意义的分析:如果显示在数据网格中,则在汇总行不散布在其余数据中的情况下,用户将无法对数据进行排序;用户将无法再使用内置的Totals选项来执行自己的聚合操作,并且仅由术语totals标识的行的插入甚至可能与集合中的其他数据冲突。 / p>

相反,我建议使用单独的查询(例如,以下内容(基于您自己的示例))在完全独立的表单控件中显示总计:

SELECT Count(Course.CourseNo) as Courses, Sum(Course.CrHrs) as Hours
FROM Course INNER JOIN Sections ON Course.CourseNo = Sections.CourseNo
WHERE Sections.Term = "spring";

但是,由于CrHrsCourse表中的字段,而不是Sections表中的字段,因此以上内容可能会产生所需结果的倍数,其中小时数乘以Sections表中相应记录的数量。

在这种情况下,以下可能更合适:

SELECT Count(Course.CourseNo) as Courses, Sum(Course.CrHrs) as Hours
FROM 
    Course INNER JOIN 
    (SELECT DISTINCT s.CourseNo FROM Sections s WHERE s.Term = "spring") q
    ON Course.CourseNo = q.CourseNo