您好我有两张桌子:
table1 - eod_stock
company_code |打开|高|低| ltp |关闭| ycp | total_volume | total_value |日期时间
表2 - company
ID |代码|名字
这里company code = code
所以为了获得我使用此代码的所有名称和其他信息:
但是第一个给了我错误,第二个只返回一行,但我需要所有200家公司及其相关信息。
select
company.code,
company.name,
eod_stock.open,
eod_stock.high,
max(eod_stock.datetime)
from
company
right join company on company.code= eod_stock.company_code;
和
select
eod_stock.company_code,
max(eod_stock.close),
eod_stock.total_volume,
eod_stock.total_trade,
eod_stock.high,
eod_stock.low,
eod_stock.ltp,
max(eod_stock.datetime),
company.name
from
eod_stock
inner join company on (company.code = eod_stock.company_code);
但是第一个给了我错误,第二个只返回一行,但我需要所有200家公司及其相关信息。
答案 0 :(得分:2)
这里的诀窍是从每个datetime
的最大company_code
列表开始,您可以使用此基本查询执行此操作:
SELECT company_code, MAX(datetime) AS maxdatetime
FROM eod_stock
GROUP BY company_code
将此加入到获取公司代码,公司名称和日终值的查询中,您应该全部设置:
SELECT
company.code,
company.name,
eod_stock.open,
eod_stock.high
FROM eod_stock
INNER JOIN company ON company.code = eod_stock.company_code
INNER JOIN (
SELECT company_code, MAX(datetime) AS maxdatetime
FROM eod_stock
GROUP BY company_code) maxdt
ON maxdt.company_code = eod_stock.company_code AND
maxdt.maxdatetime = eod_stock.datetime
答案 1 :(得分:0)
你的第一个错误,我想你必须写:
Table2 right join Table1
而非公司权利加入公司
第二个让所有公司全部加入!!
答案 2 :(得分:0)
select
eod_stock.company_code,
max(eod_stock.close),
eod_stock.total_volume,
eod_stock.total_trade,
eod_stock.high,
eod_stock.low,
eod_stock.ltp,
max(eod_stock.datetime),
company.name
from
eod_stock
inner join company on (company.code = eod_stock.company_code) group by eod_stock.company_code;
dagfr是正确的我需要在查询中添加分组。