问题:
用SQL语句把操作表变成结果集。
操 作 表:
-------------------------------------------------------------
商品编号 商品名称 商品分类 单位 仓库 数量|P0001| |华硕主板| |电脑类| |件| |仓库1| |80 |
|P0001| |华硕主板| |电脑类| |件| |仓库2| |100|
|P0002| |搬手| |五金类| |件| |仓库2| |300|
-------------------------------------------------------------
结 果 集:
-------------------------------------------------------------
商品编号 商品名称 商品分类 单位 仓库1 仓库2|P0001| |华硕主板| |电脑类| |件| |80| |100|
|P0002| |搬手| |五金类| |件| | | |300|
-------------------------------------------------------------提示,仓库可以是任意多个,但结果集中都会把每一个仓库变成一个字段。
用SQL语句把操作表变成结果集。
操 作 表:
-------------------------------------------------------------
商品编号 商品名称 商品分类 单位 仓库 数量|P0001| |华硕主板| |电脑类| |件| |仓库1| |80 |
|P0001| |华硕主板| |电脑类| |件| |仓库2| |100|
|P0002| |搬手| |五金类| |件| |仓库2| |300|
-------------------------------------------------------------
结 果 集:
-------------------------------------------------------------
商品编号 商品名称 商品分类 单位 仓库1 仓库2|P0001| |华硕主板| |电脑类| |件| |80| |100|
|P0002| |搬手| |五金类| |件| | | |300|
-------------------------------------------------------------提示,仓库可以是任意多个,但结果集中都会把每一个仓库变成一个字段。
,(select sum(数量) as 仓库1 from table1 where table1.商品编号=a.商品编号 and table1.仓库='仓库2') as 仓库2
from table1 as a group by 商品编号,商品名称,商品分类,单位
如果是:
select 商品编号, 商品名称,商品分类,单位,
sum( case 仓库 when 仓库1 then 数量 else 0 end) 仓库1,
sum( case 仓库 when 仓库2 then 数量 else 0 end) 仓库2
group by 商品编号, 商品名称,商品分类,单位
SELECT W.ID,W.UserCode,W.Name,W.Sort,W.Unit
FROM WareStock AS K,Ware AS W,Depot AS D
WHERE K.WareID=W.ID and K.DepotID=D.ID
GROUP BY W.ID,W.UserCode,W.Name,W.Sort,W.Unit
PIVOT D.Name
*/
var
s,c:string;
begin
S:='select 商品编号,商品名称,商品分类,单位,';
c:='(select sum(数量) from 表 where 商品编号=A.商品编号 and 仓库=''%s'') %s ,'
Query1.Close;
Query1.Sql.Text:='select distinct 仓库 from 表';
Query1.Open;
IF Query1.RecordCount<=0 then exit;
while not Query1.Eof do
begin
s:=s+Format(c,[Query1.FieldByName('仓库').AsString,
Query1.FieldByName('仓库').AsString]);
Query1.Next;
end;
s:=copy(s,1,Length(s)-1); //去掉最后的','
s:=s+ ' from 表 A';
这样S最后得到的就是你要的SQL