2014-12-02 34 views
0

我有一個表是這樣的:我如何比較和保持一定的價值:SQL Server 2008 R2的

ITEM | DATE | PRICE | NEW_PRICE | REDUCTION | 
Pencil | 01/10/14 | 25 | 21  |  4  | 
Pencil | 01/12/14 | 21 | 21  |  0  | 
Pencil | 01/30/14 | 21 | 21  |  0  | 
Pencil | 02/05/14 | 21 | 18  |  3  | 
Pencil | 02/17/14 | 18 | 18  |  0  | 
Pencil | 03/20/14 | 18 | 18  |  0  | 
Pencil | 06/08/14 | 18 | 16  |  2  | 
Pencil | 07/14/14 | 16 | 16  |  0  | 
Pencil | 07/28/14 | 16 | 16  |  0  | 

如何選擇,所以我可以得到的結果是這樣的:

ITEM | DATE | PRICE | NEW_PRICE | REDUCTION | REDUCTION_HOLD | 
Pencil | 01/10/14 | 25 | 21  |  4  |  4  | 
Pencil | 01/12/14 | 21 | 21  |  0  |  4  | 
Pencil | 01/30/14 | 21 | 21  |  0  |  4  | 
Pencil | 02/05/14 | 21 | 18  |  3  |  3  | 
Pencil | 02/17/14 | 18 | 18  |  0  |  3  | 
Pencil | 03/20/14 | 18 | 18  |  0  |  3  | 
Pencil | 06/08/14 | 18 | 16  |  2  |  2  | 
Pencil | 07/14/14 | 16 | 16  |  0  |  2  | 
Pencil | 07/28/14 | 16 | 16  |  0  |  2  | 

提前致謝。

回答

0

嘗試一個子查詢:

SELECT ITEM = 'Pencil', DATE = '01/10/14', PRICE = 25, NEW_PRICE = 21 , REDUCTION = 4 INTO #Table 
UNION ALL SELECT 'Pencil' ,'01/12/14'  ,21  ,21   ,0 
UNION ALL SELECT 'Pencil' ,'01/30/14'  ,21  ,21   ,0 
UNION ALL SELECT 'Pencil' ,'02/05/14'  ,21  ,18   ,3 
UNION ALL SELECT 'Pencil' ,'02/17/14'  ,18  ,18   ,0 
UNION ALL SELECT 'Pencil' ,'03/20/14'  ,18  ,18   ,0 
UNION ALL SELECT 'Pencil' ,'06/08/14'  ,18  ,16   ,2 
UNION ALL SELECT 'Pencil' ,'07/14/14'  ,16  ,16   ,0 
UNION ALL SELECT 'Pencil' ,'07/28/14'  ,16  ,16   ,0 

GO 

SELECT * 
, REDUCTION_HOLD = (SELECT TOP 1 REDUCTION FROM #Table b WHERE a.DATE >= b.DATE AND b.REDUCTION > 0 ORDER BY b.DATE DESC) 
FROM #Table a ORDER BY DATE 

結果:

enter image description here

+0

工作就像一個魅力,Mr.Bjørnbeth,你救了我的一天!謝謝 ! :d – RahdixC9 2014-12-02 08:34:13