我正在使用MS Access数据库,我想从表Tmp4生成每日股票报告,如下所示,
申__________ OpStk ___ PQty ___ SQty
2014年1月4日___ 120 _____ 0 _______ 4
2014年4月4日_____ 0 0 _____ _______ 2
2014年8月4日_____ 0 0 _____ _______ 1
2014年11月4日_____ 0 ____ 20 _______ 3
16/04/2014 _____ 0 0 _____ _______ 5
25/04/2014 _____ 0 ____ 10 _______ 3
注意: - 收盘股票=开仓股票+购买数量 - 销售数量
我使用了以下查询
'SELECT A1.DT, A1.OpStk, A1.PQty, A1.SQty,
(SELECT SUM(A2.OpStk+A2.PQty-SQty) FROM Tmp4 AS A2
WHERE A2.DT <=A1.DT) AS ClosingStk
FROM Tmp4 AS A1'
这给了我以下结果
申__________ OpStk ___ PQty ___ SQty ____ ClosingStk
2014年1月4日___ 120 _____ 0 _______ 4 _______ 116
2014年4月4日_____ 0 0 _____ _______ 2 _______ 114
2014年8月4日_____ 0 0 _____ _______ 1 _______ 113
2014年11月4日_____ 0 ____ 20 _______ 3 _______ 130
16/04/2014 _____ 0 0 _____ _______ 5 _______ 125
25/04/2014 _____ 0 ____ 10 _______ 3 _______ 132
我想要的每日股票报告如下,
申__________ OpStk ___ PQty ___ SQty ____ ClosingStk
2014年1月4日___ 120 _____ 0 _______ 4 _______ 116
2014年4月4日___ 116 _____ 0 _______ 2 _______ 114
2014年8月4日___ 114 _____ 0 _______ 1 _______ 113
2014年11月4日___ 113 ____ 20 _______ 3 _______ 130
16/04/2014 ___ 130 _____ 0 _______ 5 _______ 125
25/04/2014 ___ 125 ____ 10 _______ 3 _______ 132
谁能告诉我怎么样?
答案 0 :(得分:0)
乍一看,我认为您可以用第一行的A1.OpStk代替较长版本,这相当于以前关闭的股票价格:
SELECT A1.DT, (SELECT SUM(A2.OpStk+A2.PQty-SQty) FROM Tmp4 AS A2 WHERE A2.DT <=A1.DT) AS OpStk, A1.PQty, A1.SQty,
(SELECT SUM(A2.OpStk+A2.PQty-SQty) FROM Tmp4 AS A2
WHERE A2.DT <=A1.DT) AS ClosingStk
FROM Tmp4 AS A1;
答案 1 :(得分:0)
感谢您的快速回复。您提供的查询结果略有不同。所以我将其修改为
SELECT A1.DT, (SELECT SUM(A2.OpStk+A2.PQty-A2.SQty) FROM Tmp4 AS A2 WHERE A2.DT < A1.DT) AS OpStk,
A1.PQty, A1.SQty,
(SELECT SUM(A2.OpStk+A2.PQty-A2.SQty) FROM Tmp4 AS A2
WHERE A2.DT <=A1.DT) AS ClosingStk
FROM Tmp4 AS A1;
这解决了它。非常感谢为我指路。