仓库表x_stock
stock_id stock_name
1 A仓库
2 B仓库
... ...
商品库存明细表 x_proinoutitem
item_id pro_id pro_stock pro_jcamount pro_addtime
1 1 1 5 2015-09-05
2 1 1 8 2015-09-06
3 1 2 2 2015-09-07
4 2 1 3 2015-09-08
5 2 1 4 2015-09-07
...
如何得到分仓数量 数量取库存明细表的pro_jcamount值,以最新的时间(pro_addtime)及ID(Item_id)为最大值取值
pro_id A仓库 B仓库
1 8 2
2 3 0
------解决思路----------------------
SELECT
a.pro_id,
a.stock_name,
max(pro_jcamount) AS pro_jcamount
INTO #T3
FROM #T2 LEFT JOIN (
SELECT max(#t2.item_id)AS item_id, #T2.pro_stock, #T2.pro_id,#T1.stock_name,MAX(#T2.pro_addtime)AS pro_addtime
FROM #T2
LEFT JOIN #T1 ON #T2.pro_stock=#T1.stock_id
GROUP BY #t2.pro_id,#T1.stock_name,#T2.pro_stock
)a ON a.pro_id=#T2.pro_id AND a.pro_stock=#T2.pro_stock AND a.pro_addtime=#T2.pro_addtime AND a.item_id=#t2.item_id
WHERE a.pro_id IS NOT NULL
GROUP BY a.pro_id,a.stock_name
declare @s varchar(max)
set @s='select pro_id'
SELECT @s=@s
+','+QUOTENAME(stock_name)
+N'=isnull( SUM(CASE stock_name WHEN '+QUOTENAME(stock_name,N'''')
+N' THEN pro_jcamount END),0)'
FROM #t3
GROUP BY stock_name
exec(@s+N'
FROM #t3
GROUP BY pro_id')