34,593
社区成员
发帖
与我相关
我的任务
分享
--------------------SQL Server数据格式化工具-------------------
---------------------------------------------------------------
-- DESIGNER :happycell188(喜喜)
-- QQ :584738179
-- Development Tool :Microsoft Visual C++ 6.0 C Language
-- FUNCTION :CONVERT DATA TO T-SQL
---------------------------------------------------------------
-- Microsoft SQL Server 2005
-- Developer Edition on Microsoft Windows XP [版本 5.1.2600]
---------------------------------------------------------------
---------------------------------------------------------------
use test
go
if object_id('test.dbo.tb1') is not null drop table tb1
-- 创建数据表
create table tb1
(
物料编号 int,
数量 int
)
go
--插入测试数据
insert into tb1 select 1001,100
union all select 1003,200
union all select 1004,300
go
if object_id('test.dbo.tb2') is not null drop table tb2
-- 创建数据表
create table tb2
(
物料编号 int,
供应商编号 char(2),
分配额 char(5)
)
go
--插入测试数据
insert into tb2 select 1001,'A','100%'
union all select 1003,'A','30%'
union all select 1003,'B','30%'
union all select 1003,'C','40%'
go
if object_id('test.dbo.tb3') is not null drop table tb3
-- 创建数据表
create table tb3
(
物料编号 int,
供应商编号 char(2)
)
go
--插入测试数据
insert into tb3 select 1001,'D'
union all select 1003,'E'
union all select 1004,'F'
go
--代码实现
select 物料编号,供应商编号 from tb2
union select 物料编号,供应商编号
from tb3 where 物料编号 not in (
select 物料编号 from tb2)
/*测试结果
物料编号 供应商编号
---------------------
1001 A
1003 A
1003 B
1003 C
1004 F
(5 行受影响)
*/
--不知道是不是这个意思
select a.物料编号,isnull(a.供应商编号,c.供应商编号),sum(b.数量) 数量,sum(a.分配额) 分配额
from 物料对应供应商分配表 a join 物料数量表 b on a.物料编号=b.物料编号
right 物料对应供应商表 c on a.物料编号=c.物料编号 and a.供应商编号=c.供应商编号
group by a.物料编号,c.供应商编号
order by sum(b.数量),sum(a.分配额)
select a.物料编号,a.数量,isnull(b.供应商编号 , c.供应商编号) 供应商编号,b.分配额
from 物料数量表
left join 物料对应供应商分配表 b on a.物料编号=b.物料编号
left join 物料对应供应商表 c on a.物料编号=c.物料编号
select
a.物料编号,
a.数量,
b.供应商编号,
b.表别
from
表1 a
left join
(select 物料编号,供应商编号,2 as 表别 from 表2
union
select 物料编号,供应商编号,3 from 表3) b
on a.物料编号 = b.物料编号