我在股票部门的公司工作考虑两个出口和股票表,其中出口具有以下属性:
Export{
ExportDate Date not null,
StockID int not null,
Quantity decimal(10, 2),
};
和Stock表具有以下属性:
Stock{
ItemID int primary key,
ItemName nvarchar(MAX).
Exist decimal(15, 2)
};
因此,导出表格中的StockID是Stock表格中的ItemID引用,当导出表格中保存记录时,它还会根据导出表格中的stockID更新库存存量,导出表格中的VB.Net中的代码保存像这样的按钮:
Try
cmd = New SqlCommand("INSERT INTO Export(ExportDate,StockID,Quantity) VALUES(@ExportDate, @StockID, @Quantity)", con)
cmd.CommandTimeout = 1000
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@StockDate", dateTXT.Text)
cmd.Parameters.AddWithValue("@StockID", comboStockID.SelectedValue)
cmd.Parameters.AddWithValue("@Quantity", quantityTXT.Text)
cmd.ExecuteNonQuery()
MessageBox.show(“Stored”)
Catch ex As Exception
MessageBox.Show(“Not stored!” ex.Message)
End Try
'Updating stock Exist
Try
cmd = New SqlCommand("UPDATE Stock SET Exist = Exist - @quantity
WHERE ItemID = '" & comboStockID.SelectedValue & "'", con)
cmd.Parameters.AddWithValue("@quantity", qtyTXT.Text)
cmd.ExecuteNonQuery()
MessageBox.show(“Updated!”)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
假设在Stock表中的值如下:
ItemID ItemName Quantity
105 Black color 300
106 Green color 400
但是,当我加入它时,每行只显示300,它选择如下:
ItemID ItemName Quantity
105 Black color 300
106 Green color 300
我想加入Exist of stock with Export table,并且在每次交易中它必须显示如下:
ExportDate stockID Quantity Exist
2017/8/24 105 5 295
2017/10/30 105 25 270
帮助我们,我该怎么做!!!
答案 0 :(得分:0)
你可以使用windows函数,这是示例代码:
select exportdate, stockid, quantity,
sum(pre_balance) over (partition by stockid order by exportdate) as exist
from
(select exportdate, stockid, quantity, -quantity as pre_balance
from export
union
select '2017-01-01' as exportdate, itemid as stockid,
0 as quantity, exist as pre_balance
from stock
order by exportdate) as sub_query;
结果如下:
exportdate | stockid | quantity | exist
------------+---------+----------+--------
2017-01-01 | 105 | 0 | 300.00
2017-08-24 | 105 | 5.00 | 295.00
2017-10-30 | 105 | 25.00 | 270.00
2017-01-01 | 106 | 0 | 400.00
表来源:
latihan=> select * from stock ;
itemid | itemname | exist
--------+-------------+--------
105 | Black color | 300.00
106 | Green color | 400.00
(2 rows)
latihan=> select * from export ;
exportdate | stockid | quantity
------------+---------+----------
2017-08-24 | 105 | 5.00
2017-10-30 | 105 | 25.00
(2 rows)
此链接是关于Windows功能的一个示例,但在印度尼西亚语和postgresql:
https://github.com/muntaza/Open_Persediaan/blob/master/perhitungan_saldo.md
这是google搜索链接:
https://www.google.com/search?q=windows+function+ms+sql
关于股票的链接,用英文:
https://callmeranjeet.wordpress.com/2014/09/01/calculating-stock-with-fifo-method-in-sql/