我的表是
itemcode in out sum value datetime PP
-------|---|---|-----------|-----------|---------
A1234 | 1 | 0 | 100 |04/03/2009 | E01
A1234 | 0 | 1 | -100 |05/03/2009 | E01
A1234 | 1 | 0 | 100 |06/03/2009 | E01
A1234 | 0 | 1 | -100 |07/03/2009 | E01
A1234 | 1 | 0 | 100 |08/03/2009 | E01
A1234 | 9 | 0 | 900 |09/03/2009 | S01
A1234 | 0 | 3 | -300 |10/03/2009 | S01
A1234 | 8 | 0 | 800 |11/03/2009 | S01
A1235 | 9 | 0 | 900 |12/03/2009 | E01
A1235 | 0 | 2 | -200 |13/03/2009 | E01
A1235 | 0 | 3 | -300 |14/03/2009 | E01
A1235 | 8 | 0 | 800 |15/03/2009 | S01
结果将是:
itemcode Remain sum value datetime PP
---------|--------|-----------|-----------|----
A1234 | 1 | 100 |08/03/2009 | E01
A1234 | 6 | 600 |09/03/2009 | S01
A1234 | 8 | 800 |11/03/2009 | S01
A1235 | 4 | 400 |12/03/2009 | E01
A1235 | 8 | 800 |15/03/2009 | S01
如何选择此类数据并计算剩余库存数量,按相同商品代码和pp分组, 列出不同的库存日期
答案 0 :(得分:1)
我这样做的方法是使用SUM()函数对in列和out列求和,然后减去它们以获得库存中的值。完成后,您可以使用GROUP BY子句对所需的列进行分组。直观地说,它与你所描述的非常接近。
您还必须对日期列执行某些操作,并且您似乎希望在每个组中生成最新日期,因此我也选择了最大日期。
你没有在你的问题中列出列名,所以我在这里徘徊:
SELECT itemcode, (SUM(inColumn) - SUM(outColumn)) AS inStock, SUM(value) AS value, MAX(dateColumn) AS latestDate, pp
FROM myTable
GROUP BY itemcode, pp;
这是SQL Fiddle。