gpt4 book ai didi

sql - 构建财务报表数据库

转载 作者:行者123 更新时间:2023-12-04 14:35:35 26 4
gpt4 key购买 nike

我正在寻找构建数据库的最佳方式。我有 1997-2012 年 1000 家公司的季度财务报表。每家公司都有三种不同的报表,损益表、 Assets 负债表和现金流量表。

我希望能够对数据执行计算,例如将每个季度相加以获得每个报表上每个行项目的年度总计。

到目前为止,我尝试了两种方法:

1)将每个语句的每个行项目存储在它自己的表中,即销售将是一个表,并且只有我正在跟踪的所有公司的销售数据,公司作为主键,每个季度的数据作为一个单独的列。这似乎是处理数据的最简单方法,但每个季度更新数据非常耗时,因为有数百个表。

Sales TableCompany q32012  q22012  q12012ABC Co.  500    100 202XYZ Co. 230 302 202

2) The other option which is a little easier to update but harder to work with the data is to have a separate table for each company for each statement. For example, the income statement for Royal Bank would have it’s own table, with the primary column being the line item.

Income Statement for Royal BankLine_Item   q32012  q22012  q12012Sales            Net Profit           

The problem here is when I try to annualize this data, I get a really ugly output due to the group by

SELECT    
(CASE WHEN Line_Item = 'Sales' THEN SUM(q4 + q3 + q2 + q1) ELSE '0' END) AS Sales2012,
(CASE WHEN Line_Item = 'NetProfit' THEN SUM(q4 + q3 + q2 + q1)
ELSE '0' END) AS Inventories2012
FROM dbo.[RoyalBankIncomeStatement]
GROUP BY Line_Item

任何帮助,将不胜感激。

最佳答案

每当我不得不按财政季度、月、年或其他任何方式为财政报告构建数据库时,我发现从星型模式设计和数据仓库中借用一个概念很方便,即使我并没有真正构建一个数据仓库。

借用的概念是有一个表,我们称之为 ALMANAC,每个日期都有一行,以日期为键。在这种情况下,自然键效果很好。此处的相关属性可以是日期所属的会计月份和季度、日期是否是企业开业的日期(TRUE 或 FALSE),以及公司日历中的任何其他怪癖。

然后,您需要一个可以从无到有生成此表的计算机程序。公司日历的所有奇怪规则都嵌入在这个程序中。 ALMANAC 可以覆盖超过 3,650 行的十年期。那是一张小 table 。

现在,操作数据中的每个日期都可以用作 ALMANAC 表中的外键,前提是您始终将日期数据类型用于日期。例如,每个销售都有一个销售日期。然后按财政季度、财政年度或任何您喜欢的方式汇总,只需将运营数据与 ALMANAC 连接起来,然后使用 GROUP BY 和 SUM() 来获得您想要的汇总。

这很简单,并且可以轻而易举地生成大量时间段报告。

关于sql - 构建财务报表数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com