2013-09-16 34 views
-3

我有兩個疑問:如何從一次查詢中的採購數量中減去銷售數量?

str = "select sum(Quantity) from AddStock where ProductId=" +id.ToString() + " AND Type IN('Purchase','StockInward','Sale Return') AND EntryMode='Godown'"; 
Qty = dc.Retrieve_Datareader(str); 
str = "select sum(Quantity) from AddStock where ProductId=" +id.ToString() + " AND Type IN('StockOutward','Sale','Wastage','Purchase Return') AND EntryMode='Godown'"; 
Qty1 = dc.Retrieve_Datareader(str); 

return(Qty - Qty1); 

我怎樣寫在一個查詢上述兩個查詢,並得到不同?

回答

1

您可以一次查詢多個表。

查詢:

SELECT SUM(as1.Quantity) AS SR, 
     SUM(as2.Quantity) AS PR, 
     SUM(as1.Quantity) - SUM(as2.Quantity) AS Difference 
FROM AddStock as1, AddStock as2 
WHERE as1.ProductId = @ProductId 
AND as2.ProductId = as1.ProductId 
AND as1.Type IN ('Purchase','StockInward','Sale Return') 
AND as2.Type IN ('StockOutward','Sale','Wastage','Purchase Return') 
AND as1.EntryMode = 'Godown' 
AND as2.EntryMode = as2.EntryMode 

代碼:

using(var command = new OleDbCommand(query, connection)) 
{ 
    command.Parameters.AddWithValue("@ProductId", id); 

    using(var reader = command.ExecuteReader()) 
    { 
     if(reader.Read()) 
     { 
      var sr = Convert.ToInt32(reader[0]); 
      var pr = Convert.ToInt32(reader[1]); 
      var difference = Convert.ToInt32(reader[2]); 
     } 
    } 
} 
相關問題