Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一次查询中从采购数量中减去销售数量?_C#_Ms Access - Fatal编程技术网

C# 如何在一次查询中从采购数量中减去销售数量?

C# 如何在一次查询中从采购数量中减去销售数量?,c#,ms-access,C#,Ms Access,我有两个问题: 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 Pr

我有两个问题:

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);

如何在一个查询中写入上述两个查询并获得差异?

您可以一次查询多个表

查询:

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]);
        }
    }
}