0
下面的代码引用两个表。每个表的结构都是相同的,唯一不同的是“PRICE”和“PRICE_DATE”值。这是因为它与一年前创建的表格相同。我想要做的就是创建一个新表格,它为每个基金获取每张表格的最新价格,并将其插入新表格。除此之外,我还想要另一栏来计算增长。下面的代码适用于此目的。访问查询将两个表与标准组合在一起
SELECT [2015_11_Fund_Prices].FUND_CODE, [2015_11_Fund_Prices].PRICE AS
[[email protected]_112015], [2016_11_Fund_Prices].PRICE AS [[email protected]_112016]
([2016_11_Fund_Prices].[PRICE]/[2015_11_Fund_Prices].[PRICE]-1) AS Growth INTO 2016_11_Monthly_Fund_Prices
FROM 2016_11_Fund_Prices INNER JOIN 2015_11_Fund_Prices ON [2016_11_Fund_Prices].FUND_CODE = [2015_11_Fund_Prices].FUND_CODE
GROUP BY [2015_11_Fund_Prices].FUND_CODE, [2015_11_Fund_Prices].PRICE_DATE, [2015_11_Fund_Prices].PRICE, [2016_11_Fund_Prices].PRICE, [2016_11_Fund_Prices].PRICE_DATE, ([2016_11_Fund_Prices].[PRICE]/[2015_11_Fund_Prices].[PRICE]-1)
HAVING ((([2015_11_Fund_Prices].PRICE_DATE)=#24/11/2015#) AND (([2016_11_Fund_Prices].PRICE_DATE)=#24/11/2016#));
然而,这个代码假定最新的价格是两个表中的24/11。我想用max函数替换它,这将导致查询仅引用具有最高日期值的行中的价格。
任何人都可以帮忙吗?使用 Tabels是
+-----------+------------+-------+
| Fund_Code | PRICE_DATE | PRICE |
+-----------+------------+-------+
| 1 | 12/12/12 | 1 |
| 1 | 13/12/12 | 1.2 |
| 1 | 14/12/12 | 1.1 |
| 2 | 12/12/12 | 1.12 |
| 2 | 13/12/12 | 1.13 |
| 2 | 14/12/12 | 1.11 |
所以第二个表是完全一样的,但是对应于次年日期。 所有我想要的是一个表:
Fund_Code Price1 Price2 Growth
感谢
所以你建议有两个查询来产生结果?我认为这是可能的一个。 – naiminp
另外,为什么当我在上面的代码中添加“SELECT PRICE”时,结果会再次返回所有日期,而不仅仅是最大值? – naiminp
您可以将其作为子查询添加到您现有的查询中,但如果您将它作为单独的查询使用,则排除故障时会更简单。只需添加SELECT PRICE应该会给您一个错误,因为您既没有按PRICE进行汇总也没有进行分组。如果您将PRICE添加到分组,那么您将获得所有日期,因为您现在正按每个单一价格进行分组,而不是仅分配每个FUND_CODE;这就是为什么你必须将它作为一个单独的子查询来使用,并且不能试图通过将PRICE添加到它来快捷方式。 – SunKnight0