这个sql语句怎么写?(100分)

  • 主题发起人 主题发起人 mnmn
  • 开始时间 开始时间
M

mnmn

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个数据库
库1 : 序号 编码1 数量1 编码2
1 1-11 2 5-01
2 1-12 4 6-05
.......

库2 : 主编码 副编码 名称 单价
1 11 水泥 5.00
1 12 石灰 6.00
....
5 01 王一 100.00
...
6 05 刘二 110.00
....

结果是: 序号 编码1 名称1 金额1 编码2 名称2 单价2
1 1-11 水泥 10.00 5-01 王一 100.00
2 1-12 石灰 24.00 6-05 刘二 110.00

其中:库1中的编码1,编码2是库2中的主编码+'-'+副编码,金额1=单价*数量1
请各位帮我解决解决.谢谢了.

 
可以这样写:
select 库1.序号,库1.编码1,库2.名称 名称1,库1.数量1*库2.单价 金额1,库2.副编码,
库2.名称 名称2,库2.单价 单价2
from 库1,库2
where 库1.编码=库2.主编码||库2.副编码

用字段名和表名代替上面的汉字.
 
吃饱了撑得,还有这样建表的
 
select c.序号,c.编码1,a.名称 as 名称1,c.数量1*a.单价 as 金额1,c.编码2,
b.名称 as 名称2,b.单价 as 单价2
from
(select 主编码+'-'+副编码 as 编码1,名称, 单价 from 库2) a,
(select 主编码+'-'+副编码 as 编码1,名称, 单价 from 库2) b,库1 c
where c.编码1=a.编码1 and c.编码2=b.编码1
 
to zwma: 你的办法好像不行啊,报错了
 
Select 库1.序号,库1.编码1,库2A.名称 名称1,库1.数量1*库2A.单价 金额1,
库1.编码2,库2B.名称 名称2,库2B.单价 单价2
From 库1,库2 库2A,库2 库2B
Where 库1.编码1=库2A.主编码+'-'+库2A.副编码 and
库1.编码2=库2B.主编码+'-'+库2B.副编码
 
其实zwma也是对的。
 
就是在 主编码+'-'+副编码 这个地方报错
 
请报出你的数据库类型
 
我的数据库类型是Sql Server 2000,我在sql server 2000中直接用查询
做的,说是char 1-11类型转换的时候出错。
我做了:select 主编码+'-'+副编码 as 编码1,名称, 单价 from 库2
结果是:编码1 中只有附编码的值,没有出现1-11的格式。
 
你的主编码、副编码 是什么型的??
用convert!!

convert(nvarchar(50),主编码)+'-'convert(nvarchar(50),副编码) as 编码1

 
非常感谢各位的帮助,我明白了。
 
多人接受答案了。
 
还有问题,怎么办?我以后再给分,可以吗?

发现问题了:如果出现下列情况,每条记录有一个编码是空的
库1 : 序号 编码1 数量1 编码2
1 1-11 2
2 4 6-05
.......
用sql语句得到的数据集就会是空的,但是不应该这样,有空编码的纪录也应该找出来
这下该怎么办呢?
 
用 left or right join 进行保护
 
能不能写详细点?
 
后退
顶部