当前位置: 代码迷 >> SQL >> 请问SQL查询语句怎么编写
  详细解决方案

请问SQL查询语句怎么编写

热度:1013   发布时间:2016-05-05 15:35:04.0
请教SQL查询语句如何编写
这下面是我创建的两个库
/*创建入库信息表*/
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
  相关解决方案