日期:2014-05-17 浏览次数:20468 次
库结构大概是这样:
货号 样式号 入库时间 出库时间
a001 10 2011-1-10
b002 10 2011-1-10 2011-2-1
c003 10 2012-1-15 2012-2-2
d004 10 2013-2-3 2013-1-5
e005 10 2013-2-3
f006 15 2011-2-15 2011-3-16
g007 15 2011-2-16 2012-3-16
h009 15 2013-1-10
m012 18 2011-1-4
c009 18 2011-4-5 2012-5-6
f008 18 2012-2-19 2013-1-1
e008 18 2013-1-5 2013-2-6
我想得到的结果:
样式号 日期 销售件数 库存件数
10 2011-2 1 1
10 2012-2 1 1
10 2013-1 1 2
15 2011-3 1 0
15 2012-3 1 1
18 2012-5 1 1
18 2013-1 1 1
18 2013-2 1 1
;WITH cte AS (
SELECT 货号,样式号,入库时间, 出库时间,
CASE WHEN 出库时间 IS NOT NULL THEN 1 ELSE 0 END AS 销售
FROM #a
)
SELECT cte.样式号,CONVERT(VARCHAR(7),cte.出库时间) AS 日期,cte.销售,(
SELECT ISNULL(SUM(CASE WHEN 出库时间 IS NULL THEN 1 ELSE 0 END),0)
FROM #a WHERE #a.样式号=cte.样式号 AND #a.入库时间<cte.出库时间
) AS 库存
FROM cte
WHERE cte.出库时间 IS NOT NULL
样式号 日期 销售 库存
----------- ------- ----------- -----------
10 2011-02 1 1
10 2012-02 1 1
10 2013-01 1 2
15 2011-03 1 0
15 2012-03 1 0
18 2012-05 1 1
18 2013-01 1 1
18 2013-02 1 1
(8 行受影响)