说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教一个简单的SQL语句的写法!

编辑:说三道四文库 发布时间:2018-07-16 04:42
HTML文档下载 WORD文档下载 PDF文档下载
declare @物品 table(ID varchar(2),品名 varchar(20))
insert  @物品 values ('A','笔')
insert  @物品 values ('B','墨')
insert  @物品 values ('C','纸')
insert  @物品 values ('D','砚')
insert  @物品 values ('E','书')

declare @购进 table(ID varchar(2),数量 int)
insert @购进 values('A',100)
insert @购进 values('B',80)
insert @购进 values('C',200)

declare @销售 table(ID varchar(2),数量 int)
insert @销售 values('B', 50)
insert @销售 values('C', 30)
insert @销售 values('D', 20)

要通过以上三表得到下面的结果:
ID  材料名称   一月份购进量   二月份购进量
----  ---------    -------------      ------------
A   笔      100        null
B      墨      80                 50
C   纸      200                30
D   砚      null              20
关注
好像没有看到什么地方储存有日期啊,如果在@购进表中有一列“月份”,暂时只想到可以这样写,确实麻烦了一点:
select 
  id, 
  品名, 
  (select sum(数量) from @购进 where 月份 = 1 and @购进.id = @物品.id) as 一月份购进量, 
  (select sum(数量) from @购进 where 月份 = 2 and @购进.id = @物品.id) as 二月份购进量
from @物品


select a.ID,a.品名,b.数量,c.数量 from @物品 a left join @购进 b on a.ID=b.ID left join @销售 c
on c.ID=a.ID where a.ID in ('A','B','C','D')
我这是随便举的一个例子,不要将他与实际生活中联系起来。
declare @物品 table(ID varchar(2),品名 varchar(20))
insert  @物品 values ('A','笔')
insert  @物品 values ('B','墨')
insert  @物品 values ('C','纸')
insert  @物品 values ('D','砚')
insert  @物品 values ('E','书')

declare @购进 table(ID varchar(2),数量 int)
insert @购进 values('A',100)
insert @购进 values('B',80)
insert @购进 values('C',200)

declare @销售 table(ID varchar(2),数量 int)
insert @销售 values('B', 50)
insert @销售 values('C', 30)
insert @销售 values('D', 20)

select isnull(a.id,b.id) id,(select 品名 from @物品 where id=isnull(a.id,b.id)) 材料名称,
a.数量 购进,b.数量 销售 from @购进 a full join @销售 b on a.id=b.id
谢谢。
SQL语言真是太活太强大了,大力斑主真是怎么写怎么有理。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘