以下代码引用了两个表。每张表的结构都相同,唯一的区别是" 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
由于
答案 0 :(得分:1)
您需要这样的子查询:
SELECT FUND_CODE, MAX(PRICE_DATE) AS MaxPriceDate FROM 2016_11_Fund_Prices GROUP BY FUND_CODE
如果您将此子查询添加到上述内容并将其链接到2016_11_Fund_Prices
和FUND_CODE
上的PRICE_DATE=MaxPriceDate
表格,则应该执行您需要的操作。
SELECT 2016_11_Fund_Prices.FUND_CODE, PRICE, PRICE_DATE
FROM 2016_11_Fund_Prices
INNER JOIN (SELECT FUND_CODE, MAX(PRICE_DATE) AS MaxPriceDate FROM 2016_11_Fund_Prices GROUP BY FUND_CODE) mp
ON 2016_11_Fund_Prices.FUND_CODE=mp.FUND_CODE AND 2016_11_Fund_Prices.PRICE_DATE=mp.MaxPriceDate