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

标签 sql sql-server

在类里面,我正在创建一个数据库来跟踪我的财务状况。对于我购买的每种类型的商品,我都有一个表格。例如 RentFoodHygieneEntertainment 等...我还有一个名为 的表>Register 我要显示每个项目的每月总计。表中总计的列名称如下:MonthlyRentTotalMonthlyFoodTotal 等... 我希望 Register 表从每个表中提取总数,这样我就不必输入两次。关于我该怎么做的任何想法?我也不想创建 View 。我希望它是一张实际的 table 。我什至不确定这是否可能。

最佳答案

我假设 Rent、Food、Hygiene、Entertainment 具有相同的列类型。

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;

数据被旋转以便插入注册表。

enter image description here

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

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

希望这对您有所帮助。如果您需要更多详细信息,请告诉我。

关于sql - 如何与其他表同时创建一个表以从每个表中提取总计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195641/

相关文章:

python - 让 sqlalchemy 提取整个列

java - UTC 或时区时间戳的 SQL 标准

sql - 使用变量简化 SQL 查询

mysql - 更新列值为 True 且时间戳列为 MAX 的位置

sql-server - 从另一个数据存储更新网站上的数据库

sql - 根据子组中的几列计算百分比

sql - MS SQL 2005 中神秘的 CPU 事件

sql - 显示在结果中匹配的参数

java - MyBatis查询结果是HashMap吗?

sql - LEFT JOIN 匹配。如果没有匹配,需要在最近的日期匹配