生产一批包,有黑、棕、米色等。用到的材料有的相同的,只是颜色不同。有没有办法实现输入它们共用的材料(只输一次,这时颜色不输入),提交到生产从表中的数据变成对应包的颜色的多条材料信息!比如:生产背包:黑色,棕色,米色三种,各500个,三种包都要用到的材料塔丝龙。
生产主表:
scno name num1 color1 num2 color2 num3 color 3
sc200307270001 背包 500 黑色 500 棕色 500 米色
输入塔丝龙的信息(没有颜色),只输入一次提交,在从表:
scno name
sc200307270001 塔丝龙
如何得到以下的表:用SQL语句
scno name num color
sc200307270001 塔丝龙 500 黑色
sc200307270001 塔丝龙 500 棕色
sc200307270001 塔丝龙 500 米色恳请各位大虾指教,如果每种颜色一张单子,太浪费纸了,客户接受不了。
生产主表:
scno name num1 color1 num2 color2 num3 color 3
sc200307270001 背包 500 黑色 500 棕色 500 米色
输入塔丝龙的信息(没有颜色),只输入一次提交,在从表:
scno name
sc200307270001 塔丝龙
如何得到以下的表:用SQL语句
scno name num color
sc200307270001 塔丝龙 500 黑色
sc200307270001 塔丝龙 500 棕色
sc200307270001 塔丝龙 500 米色恳请各位大虾指教,如果每种颜色一张单子,太浪费纸了,客户接受不了。
CreateAdo.Close;
CreateAdo.SQL.Clear;
CreateAdo.SQL.Add('create table ' + TempB + '(Fname varchar(200), Fdatetime char(30),Maxneed float(8),Fdatetime1 char(30),Maxneed1 float(8),Fdatetime2 char(30),Maxneed2 float(8),Fdatetime3 char(30),Maxneed3 float(8))');
CreateAdo.ExecSQL; Aresult.Close;
Aresult.SQL.Clear;
Aresult.SQL.Add('select Fdatetime,Maxneed,Fdatetime1,Maxneed1,Fdatetime2,Maxneed2,Fdatetime3,Maxneed3,Fname from '+ TempB);
Aresult.Open;
for j:=1 to Tcount do //i-1
begin
Aresult.Append;
Aresult.FieldByName('Fname').AsString:=Fn[j];
Aresult.FieldByName('Fdatetime').AsString:=Maxtime[j];
Aresult.FieldByName('Maxneed').AsFloat:=MaxT[j];
Aresult.FieldByName('Fdatetime1').AsString:=Maxtime1[j];
Aresult.FieldByName('Maxneed1').AsFloat:=MaxT1[j];
Aresult.FieldByName('Fdatetime2').AsString:=Maxtime2[j];
Aresult.FieldByName('Maxneed2').AsFloat:=MaxT2[j];
Aresult.FieldByName('Fdatetime3').AsString:=Maxtime3[j];
Aresult.FieldByName('Maxneed3').AsFloat:=MaxT3[j];
end;
Aresult.Post; Aresult.Close;
Aresult.Open; CreateAdo.Close; //删除临时表
CreateAdo.SQL.Clear;
CreateAdo.SQL.Add('drop table ' + TempB);
CreateAdo.ExecSQL;自己参考修改
scno name num color
sc200307270001 背包 500 黑色
sc200307270001 背包 500 棕色
sc200307270001 背包 500 米色
从表:
scno name type
sc200307270001 塔丝龙 1
sc200307270001 黑色织边 0
sc200307250001 么贴术 0
如何得到:
scno name num color
sc200307270001 塔丝龙 500 黑色
sc200307270001 塔丝龙 500 棕色
sc200307270001 塔丝龙 500 米色
sc200307270001 黑色织边 1500
sc200307250001 么贴术 1500
大虾们救命~~~
在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集。有关更多信息,请参见用 CUBE 汇总数据。 CUBE 和 ROLLUP 之间的区别在于: CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
例如,简单表 Inventory 中包含:Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210 下列查询将生成小计报表:SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUPItem Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00 (7 row(s) affected)如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:ALL Blue 225.00
ALL Red 433.00 CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告与 Item 值 Chair 相组合的 Color 值的所有可能组合(Red、Blue 和 Red + Blue),而且报告与 Color 值 Red 相组合的 Item 值的所有可能组合(Chair、Table 和 Chair + Table)。对于 GROUP BY 子句中右边的列中的每个值,ROLLUP 操作并不报告左边一列(或左边各列)中值的所有可能组合。例如,ROLLUP 并不对每个 Color 值报告 Item 值的所有可能组合。ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,ROLLUP 具有下列优点: ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。
ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。
有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。 请参见SELECT用 COMPUTE 和 COMPUTE BY 汇总数据©1988-2000 Microsoft Corporation。保留所有权利。
FROM 主表,从表 where 主表.id =从表.id union
SELECT main.scno, name ,COLOR2, NUM2
FROM 主表,从表 where 主表.scno =从表.scno UNION SELECT 主表.scno, name ,COLOR3, NUM3
FROM 主表,从表 where 主表.scno =从表.scno;
先就这个自己看看,应该可以解决的
--将课程名称做为字段名显示出来
select userid,kcbh 语文 into a1 from a where kcbh='a';
select userid,kcbh 数学 into a2 from a where kcbh='b';
select userid,kcbh 英语 into a3 from a where kcbh='c';
select userid,kcbh 常识 into a4 from a where kcbh='d';select a.userid 学号,语文,数学,英语,常识
into #ddd
from a , a1, a2, a3, a4
where a.userid = a1.userid and a1.userid= a2.userid and a2.userid= a3.userid
and a3.userid=a4.useridselect * from #ddd;