我正在嘗試開發SQL Server 2005查詢,但此刻我不成功。我嘗試了所有我知道的方法,例如派生表,子查詢,CTE等,但我無法解決問題。我不會發布我在這裏試過,因爲它們涉及到很多其他的列和表的查詢,但我會嘗試用一個簡單的例子來說明這個問題:連接兩個表並使用第一個表列「過濾」第二個表的快速方法是什麼?
有兩個表:
PARTS_SOLD
和PARTS_PURCHASED
。第一個包含銷售給客戶的產品,第二個包含從供應商處購買的產品。這兩個表包含了運動本身,包含日期相關聯的外鍵等這裏是簡化架構:
表PARTS_SOLD
:
part_id
date
- 其他欄
表PARTS_PURCHASED
part_id
date
等欄目
我需要的是從
PARTS_PURCHASED
具有獨特的行加入每一行中PARTS_SOLD
,選擇通過part_id
和最大「date
」,其中「date
「等於PARTS_PURCHASED
之前的」date
「列。換句話說,我需要爲每件銷售此商品的活動收集該商品上次購買活動的一些信息。
本身的問題是,我沒有發現使用列「date
」從PARTS_SOLD
限制PARTS_PURCHASED
表MAX(date)
與PARTS_SOLD
表加入PARTS_PURCHASED
表的方式。
我本來可以用光標來解決問題,但是每個表都有數百萬行,並且可能使用遊標或子查詢來評估每行的查詢,這將使得該過程非常慢。
輸入法,你不會有一個直接關係在一個供應商訂購的數量和數量之間。當庫存不足時,庫存系統有一個重新訂貨點來自動訂貨 - 如果同一件商品有三份訂單,那麼供應商訂單將請求15件商品 - 查詢結果應如何反映這一點? – 2010-08-27 16:48:34
在零件出售時能夠識別零件的最後一次購買事件的目的是什麼?是否確定銷售商品的成本?這可能有助於提出一個能夠得到你想要結果的工作解決方案。 – 2010-08-27 17:00:04
@Adam:這是一個臨時查詢,用於識別用戶在購買項目時輸入的某些數據與用戶在銷售時輸入的日期之間的差異,並糾正這些差異。該應用程序有一個錯誤已被糾正,我們也需要糾正過去。 – IT2 2010-08-27 17:18:48