0

我需要幫助從兩個表中提取精確項匹配。我想從Detail Table中獲取Temp Detail和Master和Temp Master itemQty中存在的所有訂單都是一樣的。SQL Server - 主/細節 - 獲取提取精確細節項匹配

示例:在這種情況下,我需要master.Amount的總和,其中ItemQty是3,而細節表具有完全相同的Temp值Detail。

OrderId|  Amount | ItemQty |Status 
------------------------------------------ 
125 |  36.75 | 3 | A | 
------------------------------------------ 
128 |  11.95 | 5 | A | 
------------------------------------------ 

詳細含有大量訂單的詳細信息的

------------------------------------------ 
OrderId| ItemId | Qty | Price  | 
------------------------------------------ 
125 |  12345 | 1 | 11.00  | 
------------------------------------------ 
125 |  23456 | 1 | 12.75  | 
------------------------------------------ 
125 |  34567 | 1 | 13.00  | 
------------------------------------------ 

臨時主控

------------------------------------------ 
|OrderId|  Amount | ItemQty |Status 
------------------------------------------ 
|9999 |  36.75 | 3 | A | 
------------------------------------------ 

溫度詳細

------------------------------------------ 
|OrderId | ItemId | Qty | Price  | 
------------------------------------------ 
| 9999 | 12345 | 1 | 11.00  | 
------------------------------------------ 
| 9999 | 23456 | 1 | 12.75  | 
------------------------------------------ 
| 9999 | 34567 | 1 | 13.00  | 
------------------------------------------ 

預先感謝您

+0

謝謝約翰·卡佩萊蒂,我不知道如何格式化它。 –

+0

不用擔心,在未來只是希望的文本,並單擊{}按鈕:) –

回答

0

你可以像這樣

select m.OrderId, sum(m.amount) 
from master m 
join detail d 
on m.OrderId = d.OrderId 
join tempDetail td 
on m.OrderId = td.OrderId 
where m.ItemQty = 3 
group by m.OrderId 
having sum(d.Qty * d.Price) = sum(td.Qty * td.Price) 
+0

嗨,斯特凡諾,謝謝你,事情是溫度 - 碩士和碩士有不同的命令ID,我需要在哪裏詳細記錄是相同的對於這兩張表,不管這兩位主人有不同的訂單ID或金額。 –

+0

好吧,明白了。一個問題:在你的例子中,細節表上的數量和數量列與主表記錄上的值完全匹配(如36.75 = 11 + 12.75 + 13)。情況總是如此嗎? –

0

我最好的猜測嘗試:

select Masterr.OrderId, 
     sum(Masterr.Amount) 
    from Masterr 
where Masterr.ItemQty = 3 
    and exists(select * 
       from Detail 
       join TempMaster on TempMaster.ItemQty = Masterr.ItemQty 
       join TempDetail on TempDetail.OrderId = TempMaster.OrderId 
       where Detail.OrderId = Masterr.OrderId 
       and TempDetail.ItemId = Detail.ItemId 
       and TempDetail.Qty  = Detail.Qty 
       and TempDetail.Price = Detail.Price) 
group by Masterr.OrderId;