2016-06-07 50 views
0

我有2個表很多,lot_transactions查詢的分化在股票,salesorder記錄,輟學

很多

lotID  | salesorderdocline |   
------------------------------------------------- 
72266414 | 15   |  
72266415 | 0   |  
72266416 | 0   |  

lot_transactions

lotID  | salesorderdocline | trstypeid | trsdate 
---------------------------------------------------------------------------------------- 
72266414 | 0   | 400  |  19-05-2016 
72266414 | 11   | 1104 |  20-05-2016 
72266414 | 11   | 132  |  24-05-2016 
72266414 | 0   | 133  |  25-05-2016 
72266414 | 15   | 1104 |  30-05-2016 
72266415 | 0   | 400  |  04-02-2016 
72266416 | 0   | 400  |  03-02-2016 
72266416 | 10   | 1104 |  05-02-2016 
72266416 | 10   | 400  |  06-02-2016 
72266416 | 10   | 132  |  08-02-2016 
72266416 | 0   | 133  |  09-02-2016 

輸出

lotid  | Stockstatus 
---------------------------------------- 
72266414 | Salesorder 
72266415 | Instock 
72266416 | Dropout 

標準越來越salesorder,INSTOCK和輟學 72266414是salesorder因爲如果我們檢查salesorderdocline它已經從0變化 - 11 -0 - 15 72266415在INSTOCK因爲salesorderdocline是0 72266416是因爲salesorderdocline從0-10-0發生更改。

如果salesorderdocline = 0它是股票。 如果大於0比salesorder lot_transactions是在這裏我們可以看到所有的交易特定很多 很多該表是表,其中它只會顯示當前狀態

,我使用MSSQL數據庫

+0

'Salesorder','Instock'或'Dropout'的規則是什麼?您的描述不清楚 – Squirrel

+0

@Squirrel如果salesorderdocline從0 - 11 -0 - 15更改爲其** **銷售訂單** 如果salesorderdocline只有0並且沒有其他交易,則它不是** Instock * * 如果salesorderdocline從0-10-0發生變化而不是** dropout ** –

+0

因此,如果最終數量爲'> 0'而不是'SalesOrder',如果最終數量爲0,則爲'dropout' ?如果最終的數量是0,並且它是唯一的事務,而不是'instock'? – Squirrel

回答

1
SELECT l.lotID, 
     Stockstatus = case when l.salesorderdocline > 0 
          then 'SalesOrder' 
          when l.salesorderdocline = 0 
          and not exists 
           (
            select * 
            from lot_transactions x 
            where x.lotID = l.lotID 
            and x.salesorderdocline > 0 
           ) 
          then 'Instock' 
          else 'Dropout' 
          end 
FROM lot l 
+0

如果在lot_transaction表下,如果salesorderdocline = 0,對於1個交易或100個交易,它應該只在庫存中並且上面的查詢只顯示銷售訂單和退貨。很多是在dropout showng雖然它有庫存 –

+0

@RedDevil所以你是''InStock'或'Dropout'的規則是什麼?如何區分它? – Squirrel

+0

所以如果批次從未更改爲salesorderdocline> 0比庫存更多。但是,如果它從0變爲大於0並且再次爲0,那麼它將退出 –