急!求用友数据库(SQL)相关的练习题,最好连答案都有~·~请求请求啦~~~可以发到
1个回答
展开全部
先直接给你几个 也不知道你到底是要做什么用?
这些题有的很经典 有的有一定的难度
1,SQL 同一ID随机取一
例如我有一张业务受理表中,我要取得不同的ID办理的任意一条业务
例 表
ID YW
1 优惠
1 赠送
1 销户
2 开机
2 捆绑
3 停机
我需要得出所有的ID的一个随机业务,例如得到
1 销户
2 捆绑
3 停机
我的解答:
select id,yw
from (select *,row_number() over(partition by id order by newid()) rowNumber from cost) a
where rowNumber=1
--------------------------------------------------------------------------------
2,现数据库有三张表,分别是Depot(仓库表,存储仓库基本信息的),Container(货位表,一个仓库可以划分为若干个货位,这个表
是存储货位基本信息的),Stock(库存表,存储商品库存信息的)。仓库表和货位表是一对多的关系,既一个仓库对应多个货位。
而库存表中的结构如下
………………………………………………………………
ID 主键 自动增量
ConID 存货储位ID
GoodsID 存货商品ID
InCount 进货数量
OutCount 出货数量
LastCount 最后库存数(库存数基本以这个字段为准)
………………………………………………………………
另外,库存表是以流水的方式记录商品信息的,如商品ID为1的商品库存记录可以如下
ID ConID GoodsID InCount OutCount LastCount
____________________________________________
1 34 1 40 0 40
2 34 1 0 26 14
3 34 1 5 0 19
4 34 1 0 17 2
5 21 1 67 0 67
6 21 1 0 10 57
7 21 1 3 0 60
8 7 1 5 0 5
9 7 1 0 5 0
在此给出脚本(Depot的表由于要到达他的3,7,21,34,建表时取消了主键自增)
create table Depot(id int,[name] varchar(32))create table Container(id int identity primary key,[name] varchar(32),DepotID int )
create table Stock
(
id int identity primary key,
Conid int,
GoodsID int,
InCount int,
OutCount int,
LastCount int
)
insert into depot values(1,'商品库')
insert into depot values(2,'成品一仓')
insert into depot values(3,'成品二仓')
insert into Container values (3,'3号货位',2)
insert into Container values (7,'7号货位',1)
insert into Container values (21,'21号货位',3)
insert into Container values (34,'34号货位',1)
insert into stock values (34,1,40,0,40)
insert into stock values (34,1,0,26,14)
insert into stock values (34,1,5,0,19)
insert into stock values (34,1,0,17,2)
insert into stock values (21,1,67,0,67)
insert into stock values (21,1,10,0,57)
insert into stock values (21,1,3,0,60)
insert into stock values (7,1,5,0,5)
insert into stock values (7,1,0,5,0)
上面的数据是通过Select * From Stock Where GoodsID=1查询出来的,我们如果想查询出这个商品在某个货位上的库存数可以使用 SQL语句Select Top(1) LastCount From Stock Where GoodsID=1 And ConID=21 Order By ID DESC查询,结果就是当前商品在指定货位上的库存数。这里我们得到是60,如果将条件ConID改为34,则我们得到的库存数是67,这个结果是正确的。这个SQL语句之所以加上Top(1),那是因为库存表是以流水的方式记录库存的,既最新的那条记录的LastCount字段的值才是最新的库存。现在我描述下货位表和仓库表的关系,为了简单起见,我去除无相关字段,仓库表如下: ……………………………………………………………… ID 主键 自动增量 Name 仓库名称 ……………………………………………………………… 货位表结构如下 ……………………………………………………………… ID 主键 自动增量 Name 货位名称 DepotID 所属仓库ID ……………………………………………………………… 现有仓库3个,名称分别为商品仓,成品一仓,成品二仓,其中商品仓有两个货位,分别是34和7号货位(上面我们查询1号商品库存信息中有这些货位的存货记录,见ConID列);成品一仓有一个货位,既3号货位;成品二仓也只有一个货位,既21号货位。呵呵,说了那么多了,问题终于开始了。我现在要查询出商品1在各个仓库的存货情况,根据上面我们查询库存得到的结果来看,我们可以知道商品1在商品仓的存货数量是2+0,既商品仓货位34的数量加上货位7的数量;而商品1在成品一仓的存货记录为0,成品二仓的存货记录为60。现在我需要得到如下的结果
DepotID GoodsID DepotName StockCount
______________________________________
1 1 商品仓 2
3 1 成品二仓 60
以上是问题描述 我的回答是 select d.id select d.id Deoptid,t.goodsid GoodsID,d.[name] as DepotName,sum(t.stockcount) Stockcount
from Container c join depot d on c.depotid=d.id
join (select conid,goodsid,sum(incount-outcount) StockCount from stock group by conid,conid,goodsid)
t on c.id=t.conid group by d.id,t.goodsid,d.[name]
另外的解答
1)
SELECT B.DEPOTID,A.GOODSID,B.NAME,SUM(A.LASTCOUNT)
FROM STOCK A
LEFT JOIN
(SELECT M.ID AS CID,N.ID,M.DEPOTID,N.NAME FROM CONTAINER M LEFT JOIN DEPOT n
ON M.DEPOTID=N.ID) B
ON A.CONID = B.CID
WHERE NOT EXISTS(SELECT 1 FROM STOCK WHERE CONID=A.CONID AND ID>A.ID)
AND A.GOODSID=1
GROUP BY B.DEPOTID,A.GOODSID,B.NAME
2)
SELECT c.DepotID, t.Mid AS GoodsID, s.LastCount, d.name
FROM
(SELECT MAX(ID) AS Mid, ConID FROM stock group by ConID) t
INNER JOIN stock s ON t.Mid = s.ID AND s.LastCount>0
INNER JOIN Container c ON s.ConID = c.ID
INNER JOIN Depot d ON c.DepotID = d.ID
这些题有的很经典 有的有一定的难度
1,SQL 同一ID随机取一
例如我有一张业务受理表中,我要取得不同的ID办理的任意一条业务
例 表
ID YW
1 优惠
1 赠送
1 销户
2 开机
2 捆绑
3 停机
我需要得出所有的ID的一个随机业务,例如得到
1 销户
2 捆绑
3 停机
我的解答:
select id,yw
from (select *,row_number() over(partition by id order by newid()) rowNumber from cost) a
where rowNumber=1
--------------------------------------------------------------------------------
2,现数据库有三张表,分别是Depot(仓库表,存储仓库基本信息的),Container(货位表,一个仓库可以划分为若干个货位,这个表
是存储货位基本信息的),Stock(库存表,存储商品库存信息的)。仓库表和货位表是一对多的关系,既一个仓库对应多个货位。
而库存表中的结构如下
………………………………………………………………
ID 主键 自动增量
ConID 存货储位ID
GoodsID 存货商品ID
InCount 进货数量
OutCount 出货数量
LastCount 最后库存数(库存数基本以这个字段为准)
………………………………………………………………
另外,库存表是以流水的方式记录商品信息的,如商品ID为1的商品库存记录可以如下
ID ConID GoodsID InCount OutCount LastCount
____________________________________________
1 34 1 40 0 40
2 34 1 0 26 14
3 34 1 5 0 19
4 34 1 0 17 2
5 21 1 67 0 67
6 21 1 0 10 57
7 21 1 3 0 60
8 7 1 5 0 5
9 7 1 0 5 0
在此给出脚本(Depot的表由于要到达他的3,7,21,34,建表时取消了主键自增)
create table Depot(id int,[name] varchar(32))create table Container(id int identity primary key,[name] varchar(32),DepotID int )
create table Stock
(
id int identity primary key,
Conid int,
GoodsID int,
InCount int,
OutCount int,
LastCount int
)
insert into depot values(1,'商品库')
insert into depot values(2,'成品一仓')
insert into depot values(3,'成品二仓')
insert into Container values (3,'3号货位',2)
insert into Container values (7,'7号货位',1)
insert into Container values (21,'21号货位',3)
insert into Container values (34,'34号货位',1)
insert into stock values (34,1,40,0,40)
insert into stock values (34,1,0,26,14)
insert into stock values (34,1,5,0,19)
insert into stock values (34,1,0,17,2)
insert into stock values (21,1,67,0,67)
insert into stock values (21,1,10,0,57)
insert into stock values (21,1,3,0,60)
insert into stock values (7,1,5,0,5)
insert into stock values (7,1,0,5,0)
上面的数据是通过Select * From Stock Where GoodsID=1查询出来的,我们如果想查询出这个商品在某个货位上的库存数可以使用 SQL语句Select Top(1) LastCount From Stock Where GoodsID=1 And ConID=21 Order By ID DESC查询,结果就是当前商品在指定货位上的库存数。这里我们得到是60,如果将条件ConID改为34,则我们得到的库存数是67,这个结果是正确的。这个SQL语句之所以加上Top(1),那是因为库存表是以流水的方式记录库存的,既最新的那条记录的LastCount字段的值才是最新的库存。现在我描述下货位表和仓库表的关系,为了简单起见,我去除无相关字段,仓库表如下: ……………………………………………………………… ID 主键 自动增量 Name 仓库名称 ……………………………………………………………… 货位表结构如下 ……………………………………………………………… ID 主键 自动增量 Name 货位名称 DepotID 所属仓库ID ……………………………………………………………… 现有仓库3个,名称分别为商品仓,成品一仓,成品二仓,其中商品仓有两个货位,分别是34和7号货位(上面我们查询1号商品库存信息中有这些货位的存货记录,见ConID列);成品一仓有一个货位,既3号货位;成品二仓也只有一个货位,既21号货位。呵呵,说了那么多了,问题终于开始了。我现在要查询出商品1在各个仓库的存货情况,根据上面我们查询库存得到的结果来看,我们可以知道商品1在商品仓的存货数量是2+0,既商品仓货位34的数量加上货位7的数量;而商品1在成品一仓的存货记录为0,成品二仓的存货记录为60。现在我需要得到如下的结果
DepotID GoodsID DepotName StockCount
______________________________________
1 1 商品仓 2
3 1 成品二仓 60
以上是问题描述 我的回答是 select d.id select d.id Deoptid,t.goodsid GoodsID,d.[name] as DepotName,sum(t.stockcount) Stockcount
from Container c join depot d on c.depotid=d.id
join (select conid,goodsid,sum(incount-outcount) StockCount from stock group by conid,conid,goodsid)
t on c.id=t.conid group by d.id,t.goodsid,d.[name]
另外的解答
1)
SELECT B.DEPOTID,A.GOODSID,B.NAME,SUM(A.LASTCOUNT)
FROM STOCK A
LEFT JOIN
(SELECT M.ID AS CID,N.ID,M.DEPOTID,N.NAME FROM CONTAINER M LEFT JOIN DEPOT n
ON M.DEPOTID=N.ID) B
ON A.CONID = B.CID
WHERE NOT EXISTS(SELECT 1 FROM STOCK WHERE CONID=A.CONID AND ID>A.ID)
AND A.GOODSID=1
GROUP BY B.DEPOTID,A.GOODSID,B.NAME
2)
SELECT c.DepotID, t.Mid AS GoodsID, s.LastCount, d.name
FROM
(SELECT MAX(ID) AS Mid, ConID FROM stock group by ConID) t
INNER JOIN stock s ON t.Mid = s.ID AND s.LastCount>0
INNER JOIN Container c ON s.ConID = c.ID
INNER JOIN Depot d ON c.DepotID = d.ID
聚龄信息技术
2023-07-25 广告
2023-07-25 广告
WMS系统包括以下功能:1. 入库管理:包括全局管理、RF系统、复核台、看板系统等;2. 初始化设置:包括运行规则自定义设置、库存物料的清单导入等;3. 订单处理:包括订单信息管理、货物流管理、信息报表等;4. 收货管理:包括拣选管理、盘点...
点击进入详情页
本回答由聚龄信息技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询