簡體   English   中英

SQL左聯接子查詢問題

[英]SQL Left Join Subquery Issue

我正在嘗試從數據表中獲取最新價格。 數據將如下所示:

零件價格日期

----- ----- --------

10525 .25 1/1/2010

10525 5.00 7/6/2014

10526 4.25 7/1/2014

我嘗試使用聯接以便獲得“ 10525 5.00 7/6/2014”的結果,但是它給了我這個錯誤:

列前綴“ orderdtl”與查詢中使用的表名或別名不匹配。 聲明無法准備。”

如果我退出聯接,它就可以正常工作。 我要去哪里錯了?

SELECT orderdtl.partnum, orderdtl.docunitprice, orderhed.orderdate
FROM mfgsys80.dbo.orderdtl AS orderdtl, mfgsys80.dbo.orderhed AS orderhed
INNER JOIN(
    SELECT orderdtl.partnum, MAX(orderhed.orderdate) AS 'maxDate'
    FROM mfgsys80.dbo.orderdtl AS orderdtl, mfgsys80.dbo.orderhed AS orderhed
    GROUP BY orderdtl.partnum
) AS Temp
    ON orderdtl.partnum = Temp.partnum AND orderhed.orderdate = Temp.maxDate
WHERE orderdtl.ordernum = orderhed.ordernum AND ((orderdtl.custnum=74))
ORDER BY orderdtl.partnum

您查詢的格式是錯誤的。 應該像

SELECT orderdtl.partnum, orderdtl.docunitprice, orderhed.orderdate
FROM mfgsys80.dbo.orderdtl AS orderdtl
JOIN mfgsys80.dbo.orderhed AS orderhed
ON orderdtl.ordernum = orderhed.ordernum
INNER JOIN(
    SELECT ol.partnum, MAX(od.orderdate) AS 'maxDate'
    FROM mfgsys80.dbo.orderdtl ol 
    JOIN mfgsys80.dbo.orderhed od
    ON ol.ordernum = od.ordernum
    GROUP BY ol.partnum
) Temp
ON orderdtl.partnum = Temp.partnum 
AND orderhed.orderdate = Temp.maxDate
WHERE  orderdtl.custnum=74
ORDER BY orderdtl.partnum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM