【发布时间】:2017-01-04 19:15:18
【问题描述】:
下面的代码引用了两个表。每个表的结构都相同,唯一的区别是“PRICE”和“PRICE_DATE”值。这是因为它是一年前创建的同一张表。我想要做的就是有一个新表,它将每个基金的每个表中的最新价格插入到一个新表中。除此之外,我还想要另一个计算增长的列。 下面的代码适用于此目的。
SELECT [2015_11_Fund_Prices].FUND_CODE, [2015_11_Fund_Prices].PRICE AS
[PRICE_@_112015], [2016_11_Fund_Prices].PRICE AS [PRICE_@_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 函数替换它,这将导致查询仅引用具有最高日期值的行中的价格。
有人可以帮忙吗? 使用的表格是
+-----------+------------+-------+
| 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
谢谢
【问题讨论】:
标签: sql ms-access subquery where having