2016-03-07 101 views
1

我有2個表,不同日期的SQL Server和數量

表1是事務表

+----------+-----------+---------+------------+-----+ 
| IDOutlet | IDProduct | TrxType | TrxDate | Qty | 
+----------+-----------+---------+------------+-----+ 
|  101 | ASD11  |  2 | 11/11/2015 | 15 | 
|  101 | ASD11  |  3 | 11/14/2015 | -3 | 
|  101 | ASD11  |  3 | 11/17/2015 | -6 | 
|  101 | ASD11  |  2 | 11/22/2015 | 7 | 
|  101 | ASD11  |  3 | 11/26/2015 | -2 | 
|  101 | ASD11  |  2 | 12/3/2015 | 1 | 
|  101 | ASD11  |  3 | 12/9/2015 | -3 | 
|  101 | ASD11  |  3 | 12/11/2015 | -2 | 
|  101 | ASD11  |  2 | 12/12/2015 | 5 | 
|  101 | FFD34  |  2 | 11/11/2015 | 9 | 
|  101 | FFD34  |  3 | 11/14/2015 | -3 | 
|  101 | FFD34  |  2 | 11/16/2015 | 3 | 
|  101 | FFD34  |  3 | 11/19/2015 | -4 | 
|  101 | FFD34  |  3 | 11/23/2015 | -3 | 
|  102 | FFD34  |  2 | 11/26/2015 | 2 | 
|  102 | FFD34  |  2 | 11/28/2015 | 4 | 
|  102 | FFD34  |  3 | 11/29/2015 | -5 | 
|  102 | FFD34  |  3 | 12/1/2015 | -1 | 
+----------+-----------+---------+------------+-----+ 

表2是opnametable

+----------+-----------+------------+-----------+ 
| IDOutlet | IDProduct | OpnameDate | QtyOpname | 
+----------+-----------+------------+-----------+ 
|  101 | ASD11  | 11/20/2015 |   5 | 
|  101 | FFD34  | 11/30/2015 |   5 | 
|  102 | FFD34  | 11/30/2015 |   1 | 
+----------+-----------+------------+-----------+ 

而且我想這樣

結果
+----------+-----------+------------+---------+ 
| IDOutlet | IDProduct | OpnameDate | Sum Qty | 
+----------+-----------+------------+---------+ 
|  101 | ASD11  | 11/20/2015 |  6 | 
|  101 | FFD34  | 11/20/2015 |  5 | 
|  102 | FFD34  | 11/30/2015 |  1 | 
+----------+-----------+------------+---------+ 
+0

什麼是你的問題?表結構,樣本數據和預期結果... – sgeddes

+0

我刪除了額外的「片段」內容,您不需要這些內容,只是澄清了一下問題,我們看到了您擁有的內容,您想要什麼?你有什麼嘗試? –

+0

我需要總結交易表中的數量,但計算引用opname日期 – Henry

回答

2

您可以使用在JOIN標準的日期比較:

SELECT T2.IDOutlet,T2.IDProduct,T2.OpnameDate,SUM(T1.Qty) AS Sum_Qty 
FROM opnametable T2 
LEFT JOIN transaction T1 
    ON T2.IDOUtlet = T1.IDOutlet 
AND T2.IDProduct = T1.IDProduct 
AND T1.TrxDate <= T2.OpnameDate 
GROUP BY T2.IDOutlet,T2.IDProduct,T2.OpnameDate 

我假設日期將被存儲在一個適當的日期數據類型,並且要包括OpnameDate

+0

@ shawnt00我確實這樣做,最初誤解了他們在使用子查詢之後,未能將其切換回來。 –

+0

總和(數量)是交易表中數量的總和 – Henry

+0

@哈特我知道這是怎麼回事。 – shawnt00

0

試試這個

select o.IDOutlet,o.IDProduct,sum(t.Qty) as [Sum Qty] 
from opnametable o left outer join transaction1 t on o.IDOutlet=t.IDOutlet 
and o.IDProduct=t.IDProduct and t.trxdate<o.OpnameDate 
group by o.IDOutlet,o.IDProduct