我正在与一个相当简单的查询争吵。但是,鉴于我的 Access 和 SQL 能力水平较低,我在当前项目中遇到了障碍。详细信息如下,并提前感谢大家的耐心等待。
基本上,我正在尝试使用历史财务数据来测试一个众所周知的破产预测模型。财务数据以年度格式存储(下表列出)。该数据库的结构使得每家公司在公司记录表IDX_FS
(DATA_BS
在每个 DATA 表中,有一个字段包含每个公司的数据记录的特定年份[4DTYR]
及其各自的财务数据。该字段中的数据重复并存在于每家公司以及存在的每一年。
例如:
[CONAME] [4DTYR] [A_TOTAL]
Apple Inc. 2009 200
Apple Inc. 2010 220
Apple Inc. 2011 240
Google Inc. 2009 180
Google Inc. 2010 170
Google Inc. 2011 160
我遇到的问题是该字段中的数据[4DTYR]
存在并在各种表中重复,这些表中的数据被用于计算少数表达式中的算术,我最终得到了大量的重复(并且看起来是排列) 我的查询输出中的数据。
除了 SQL 脚本之外,我还详细介绍了下面的表、字段和表达式。请注意,我尝试添加一个条件WHERE
,尝试将[4DTYR]
不同表中的所有日期设置为相同。该部分以洋红色突出显示。这似乎仍然不起作用,因为当有 20 年的数据时,我只能获得 1 年的输出。此外,当我在不使用表达式的情况下运行查询时,现有参数会为我提供大约 500 条记录的输出。
感谢您的回复。所以,我接受了 Gords 的建议并在下面进行了修改。但是,我收到一个 JOIN 语法错误。请注意,IDX_FS 包含 CUSIP 字段,但不包含 4DTYR 字段。所以,我用 AND 添加到原始语句中。建议?非常感谢。
FROM (((IDX_FS LEFT JOIN DATA_BS ON IDX_FS.CUSIP = DATA_BS.CUSIP) LEFT JOIN DATA_Footnotes ON IDX_FS.CUSIP = DATA_Footnotes.CUSIP) LEFT JOIN DATA_IS ON IDX_FS.CUSIP = DATA_IS.CUSIP) LEFT JOIN DATA_SP ON IDX_FS.CUSIP = DATA_SP.CUSIP AND (((DATA_BS LEFT JOIN DATA_IS ON DATA_BS.CUSIP = DATA_IS.CUSIP AND DATA_BS.4DTYR = DATA_IS.4DTYR) LEFT JOIN DATA_SP ON DATA_BS.CUSIP = DATA_SP.CUSIP AND DATA_BS.4DTYR = DATA_SP.4DTYR) LEFT JOIN DATA_Footnotes.4DTYR ON DATA_BS.CUSIP = DATA_Footnotes.CUSIP AND DATA_BS.4DTYR = DATA_Footnotes.4DTYR