这下面是我创建的两个库
/*创建入库信息表*/
create table tb_InStore
(
ISID int IDENTITY(1,1) PRIMARY KEY,/*入库编号*/
PrID int references tb_Provider(PrID),/*供应商编号*/
[ISDate] datetime DEFAULT (getdate()),/*入库日期*/
StoreID INT references tb_Store(StoreID),/*仓库编号*/
MaterialID int references tb_Material(MaterialID),/*材料ID*/
MaterialName varchar(20) not null,/*材料名称*/
MaterialSpec varchar(20),/*材料规格*/
MaterialUnit varchar(10) default 'T',/*材料单位*/
MaterialPrice money check (MaterialPrice>0),/*材料单价*/
MaterialNum float check (MaterialNum>0),/*材料数量*/
MaterialAPrice AS ([MaterialNum] * [MaterialPrice]),/*材料总价 自动计算*/
HandlePeople varchar(20),/*检验人*/
ISRemark varchar(200)/*备注*/
)
/*创建出库信息表*/
create table tb_OutStore
(
OSID int IDENTITY(1,1) PRIMARY KEY,/*出库编号*/
PGPeople varchar(20) not null,/*领用人*/
OSDate datetime DEFAULT (getdate()),/*出库日期*/
MaterialID int references tb_Material(MaterialID),/*材料ID*/
MaterialName varchar(20) not null,/*材料名称*/
MaterialSpec varchar(20),/*材料规格*/
MaterialUnit varchar(10) default 'T',/*材料单位*/
MaterialPrice money check (MaterialPrice>0),/*材料单价*/
MaterialNum float check (MaterialNum>0),/*材料数量*/
MaterialAPrice AS ([MaterialNum] * [MaterialPrice]),/*材料总价 自动计算*/
HandlePeople varchar(20),/*检验人*/
OSRemark varchar(200)/*备注*/
)
要求
查询某一种规格型号的材料(例如水泥 325)当前库存数量(库存数量=入库数量-领用数量)
查询一段时间内(例如2008-1-1至2008-6-30)只有入库没有领用的材料。
查询一段时间内(例如2008-1-1至2008-6-30)每一个供应商的各自的入库单的单据张数。
总共三条SQL语句。谢谢大家了。
------解决方案--------------------
查询某一种规格型号的材料(例如水泥 325)当前库存数量(库存数量=入库数量-领用数量)
- SQL code
select MaterialID,MaterialName,sum(MaterialNum) as 库存数量from(select MaterialID,MaterialName,MaterialNum from tb_InStoreunion allselect MaterialID,MaterialName,-MaterialNum from tb_OutStore) twhere MaterialID=325group by MaterialID,MaterialName
------解决方案--------------------
查询一段时间内(例如2008-1-1至2008-6-30)只有入库没有领用的材料。
- SQL code
select distinct MaterialID,MaterialName from tb_InStore awhere [ISDate] between '2008-01-01' and '2008-06-30'and not exists (select 1 from tb_OutStore where MaterialID=a.MaterialID and OSDate between '2008-01-01' and '2008-06-30')
------解决方案--------------------
查询一段时间内(例如2008-1-1至2008-6-30)每一个供应商的各自的入库单的单据张数。
- SQL code
select PrID,count(*)from tb_InStorewhere [ISDate] between '2008-01-01' and '2008-06-30'group by PrID