如何与其他表格同时创建表格以从每个表格中提取总计?

时间:2019-03-16 10:16:25

标签: sql sql-server

对于班级,我正在创建一个数据库来跟踪我的财务状况。我为购买的每种物品都有一张桌子。例如RentFoodHygieneEntertainment等...我还有一个名为Register的表,我想显示每月的总数每一个项目。表中总计的列名称如下:MonthlyRentTotalMonthlyFoodTotal等... 我希望Register表从每个表中提取总数,因此我不必两次输入。关于如何做到这一点的任何想法?我也不想创建视图。我希望它是一个实际的表。我什至不确定这是否可行。

2 个答案:

答案 0 :(得分:1)

我假设“租金”,“食物”,“卫生”,“娱乐”具有相同的列类型。

INSERT INTO Register
SELECT *
FROM
  (SELECT SUM(a.rent_value) AS value,
          'monthlyrent' AS TYPE
   FROM Rent a
   UNION SELECT SUM(b.food_value) AS value,
                'monthlyfood' AS TYPE
   FROM Food b) d pivot(max(value)
                        FOR TYPE IN (monthlyrent, monthlyfood)) piv;

数据被透视以便插入到Register表中。

enter image description here

您可以将此查询放入存储过程中,也可以简单地手动运行它。如果您想在Register表中获取更新的数据,我建议:

  • 使用TRUNCATE for Register表创建存储过程,然后执行上述查询
  • 创建SQL作业,并在需要时安排存储过程的运行。

希望这会有所帮助。让我知道您是否需要其他详细信息。

答案 1 :(得分:0)

仅在有充分理由的情况下,才应将项目分隔到单独的表中。对于您描述的项目,我没有令人信服的理由。

我会想象这样的数据结构:

  • itemCategories -包含您关注的类别列表,例如“食品”,“卫生”等。
  • Purchases -包含每笔购买,并包含purchaseDatelocationitemCategorydescription等列。

您可能需要其他实体的其他表,例如“位置”。

您所说的Register表将只是对Purchases的查询或查看。