日期:2014-05-17 浏览次数:20812 次
select 商品编号, sum(decode(所在仓库,'1',商品数量,0)) as 总量, 1 所在仓库 from table group by 商品编号
------解决方案--------------------
create table testTab
(
id varchar(10),
num number,
ran number
)
insert into testTab (id,num,ran) values('a',1,1);
insert into testTab (id,num,ran) values('a',2,1);
insert into testTab (id,num,ran) values('b',2,2);
insert into testTab (id,num,ran) values('a',2,2);
select id,
sum(decode(ran,ran,num)) as 总量,
ran 所在仓库
from testTab
group by id,ran
行列转换
------解决方案--------------------
--你应该有一个 仓库表 和 一个 商品总表 吧,要不然这个设计就太2了 --假设 仓库表为 t1 商品总表为 t2 (如果没有 你就自己建俩 维护一下,要不然你要的效果没办法达到) WITH TMP AS (SELECT T1.商品编号, T2.仓库编号 FROM T1, T2 --笛卡尔积,构造全部商品在每个仓库的分配表 ) TMP2 AS (SELECT 商品编号, SUM(商品数量) AS 总量, 所在仓库 FROM TABLE WHERE 所在仓库 = '1' GROUP BY 商品编号) SELECT TMP.商品编号, NVL(TMP2.总量, 0), T2.仓库编号 AS 所在仓库 FROM TMP LEFT JOIN TMP1 ON TMP.商品编号 = TMP1.商品编号 AND TMP.仓库编号 = TMP1.仓库编号 ;
------解决方案--------------------
select 商品编号,sum(商品数量) as 总量,所在仓库 from table where 所在仓库='1' group by 商品编号,所在仓库
这样不就可以了?
可能有些商品不会在同一个仓库吧。。
------解决方案--------------------
select 商品编号,sum(数量),所在仓库 from t where 所在仓库='1' group by 商品编号,所在仓库;