我有两张桌子:
第一
Order Product Date of order
4772 CF007115 2014-03-31 14:24:29.000
和第二个
Product Date of buy Price
CF007115 2014-03-18 111.398
CF007115 2014-03-27 103.121
CF007115 2014-05-08 0.061
CF007115 2014-07-21 0.062
CF007115 2015-01-22 0.065
CF007115 2015-05-29 0.068
我需要下一个结果
Order Product Date of order date of buy Price
4772 CF007115 2014-03-31 2014-03-27 103,121
结果必须显示最接近订单的价格。
我试着用这个:
SELECT DISTINCT dbo.OPSinValor.orden, dbo.OPSinValor.CodComponente, dbo.OPSinValor.Fecha_Declaracion, dbo.EntradasParaOP3.FechaIngStock, dbo.EntradasParaOP3.ppp
FROM dbo.OPSinValor
LEFT OUTER JOIN
dbo.EntradasParaOP3 ON dbo.OPSinValor.CodComponente = dbo.EntradasParaOP3.Articulo
WHERE (dbo.OPSinValor.CodComponente = 'CF007115')
GROUP BY dbo.OPSinValor.orden, dbo.OPSinValor.CodComponente, dbo.OPSinValor.Fecha_Declaracion, dbo.EntradasParaOP3.FechaIngStock,
dbo.EntradasParaOP3.ppp
HAVING (dbo.OPSinValor.Fecha_Declaracion >= MAX(dbo.EntradasParaOP3.FechaIngStock))
这是结果
4772 CF007115 2014-03-31 2014-03-18 111,398
4772 CF007115 2014-03-31 2014-03-27 103,121
我尝试使用子查询,但结果会给我第二个表的所有记录
答案 0 :(得分:0)
我希望您的第一个表格是您的订单,第二个表格(包含更多行)是您的产品表格 - 只是为了有一个名称约定。
你可以试试这个:
SELECT *
FROM orders o
INNER JOIN (
SELECT *
FROM products p
WHERE p.[date of buy] <= o.[date of order]
ORDER BY p[date of buy] DESC LIMIT 1
) as p