表名:销售表,字段为:单据号,单据日期,客户名称,备注,商品名称,规格型号,数量,单价,金额,由于同一个单据号有多个商品名称,现在想通过一个SQL语句得到2张表:销售主表(FID,单据号,单据日期,客户名称,备注,);销售子表(SID,FID,商品名称,规格型号,数量,单价,金额),求助高手!
fid和Sid都是自动编号
可能没说清楚
举例:销售表
单据号 单据日期 客户名称 备注 商品名称 规格型号 数量 单价 金额
001 2012-4-1 联想 销售内存硬盘 内存 2G 100 50 5000
001 2012-4-1 联想 销售内存硬盘 硬盘 1T 50 400 20000
002 2012-4-1 神舟 销售主板机箱 主板 ATI 50 500 25000
002 2012-4-1 神舟 销售主板机箱 机箱 金河田 50 150 7500
得到的结果:
销售主表
FID 单据号 单据日期 客户名称 备注
1 001 2012-4-1 联想 销售内存硬盘
2 002 2012-4-1 神舟 销售主板机箱
销售子表
SID FID 商品名称 规格型号 数量 单价 金额
1 1 内存 2G 100 50 5000
2 1 硬盘 1T 50 400 20000
3 2 主板 ATI 50 500 25000
4 2 机箱 金河田 50 150 7500
求助SQL语句,要把一张表拆成2张表!
答案:5 悬赏:0
解决时间 2021-03-06 23:33
- 提问者网友:紫柔同归
- 2021-03-06 12:13
最佳答案
- 二级知识专家网友:星痕之殇
- 2021-03-06 13:32
要先建表create table 销售主表 (
FID int identity (1,1) primary key,
单据号 varchar(10) not null,
单据日期 varchar(10) not null,
客户名称 varchar(100) not null,
备注 text);之所以要先建表是由于你有一个自动序列号,每插入一个数据他会自动为FID加1,
INSERT INTO 销售主表 (单据号,单据日期,客户名称,备注)
SELECt 单据号,单据日期,客户名称,备注 from 销售表;
这里得到了第一个主表,由你上面的补充可得知,你的子表是以这个主表的FID为基础上再建的,再建一个表create table 销售子表(SID int identity (1,1) primary key,
FID int references 销售主表 (fid),
商品名称 varchar(100),
规格型号 varchar(30),
数量 int,
单价 int,
金额 int);
现在就插入数据
INSERT INTO 销售子表(FID,商品名称,规格型号,数量,单价,金额)
SELECt A.FID,B.商品名称,B.规格型号,B.数量,B.单价,B.金额
FROM 销售主表 A, 销售表 B
WHERe A.单据号=B.单据号;
SID列是自动增加的,不用插数,现在就可以得到你想要的数据表了,你试一下吧,应该没问题的,如果还有不清楚的,我为你答
FID int identity (1,1) primary key,
单据号 varchar(10) not null,
单据日期 varchar(10) not null,
客户名称 varchar(100) not null,
备注 text);之所以要先建表是由于你有一个自动序列号,每插入一个数据他会自动为FID加1,
INSERT INTO 销售主表 (单据号,单据日期,客户名称,备注)
SELECt 单据号,单据日期,客户名称,备注 from 销售表;
这里得到了第一个主表,由你上面的补充可得知,你的子表是以这个主表的FID为基础上再建的,再建一个表create table 销售子表(SID int identity (1,1) primary key,
FID int references 销售主表 (fid),
商品名称 varchar(100),
规格型号 varchar(30),
数量 int,
单价 int,
金额 int);
现在就插入数据
INSERT INTO 销售子表(FID,商品名称,规格型号,数量,单价,金额)
SELECt A.FID,B.商品名称,B.规格型号,B.数量,B.单价,B.金额
FROM 销售主表 A, 销售表 B
WHERe A.单据号=B.单据号;
SID列是自动增加的,不用插数,现在就可以得到你想要的数据表了,你试一下吧,应该没问题的,如果还有不清楚的,我为你答
全部回答
- 1楼网友:一池湖水
- 2021-03-06 18:20
一句SQL两个结果,开玩笑吧。
分开来查询啦。
- 2楼网友:时光不老我们不分离
- 2021-03-06 17:10
两个Select 语句,两个临时表,两个插入。。
写成一个存储过程。。。
- 3楼网友:恕我颓废
- 2021-03-06 16:32
改成如下:
string.fomart("select p.* from tb_shop_product p,tb_shop_sort1 s where p.sort1id=s.sort1id and p.pname like '%{0}%' and s.sort1id='{1}'",name,typeid);
- 4楼网友:偏爱自由
- 2021-03-06 15:00
销售主表
select distinct 单据号,单据日期,客户名称,备注 from 销售表
销售子表
select 单据号,商品名称,规格型号,数量,单价,金额 from 销售表 order by 单据号
SID,FID从哪里来的?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯