问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求个SQL语句,我认为特复杂,逻辑性很强,不过高手们肯定会写!_百度知 ...

发布网友 发布时间:2022-04-30 10:30

我来回答

5个回答

热心网友 时间:2022-04-08 22:22

CREATE TABLE Depot(
ID INT IDENTITY(1, 1) PRIMARY KEY,
Name VARCHAR(10)
);
go

INSERT INTO Depot
SELECT '商品仓' UNION ALL
SELECT '成品一仓' UNION ALL
SELECT '成品二仓';
go

-- 为了造测试数据,这里不自增了
CREATE TABLE Container(
ID INT PRIMARY KEY,
Name VARCHAR(20),
DepotID INT
);

INSERT INTO Container
SELECT 21, '21号仓位', 3 UNION ALL
SELECT 34, '34号仓位', 1 UNION ALL
SELECT 7, '7号仓位', 1;
go

CREATE TABLE Stock(
ID INT IDENTITY(1,1) PRIMARY KEY,
ConID INT,
GoodsID INT,
InCount INT,
OutCount INT,
LastCount INT
);
go

INSERT INTO Stock
SELECT 34, 1, 40, 0 , 40 UNION ALL
SELECT 34, 1, 0 , 26, 14 UNION ALL
SELECT 34, 1, 5 , 0 , 19 UNION ALL
SELECT 34, 1, 0 , 17, 2 UNION ALL
SELECT 21, 1, 67, 0 , 67 UNION ALL
SELECT 21, 1, 0 , 10, 57 UNION ALL
SELECT 21, 1, 3 , 0 , 60 UNION ALL
SELECT 7 , 1, 5 , 0 , 5 UNION ALL
SELECT 7 , 1, 0 , 5 , 0
go

-- 上面是测试表/数据

-- 下面是查询
WITH
stockCTE
AS
(
SELECT
Depot.ID AS DepotID,
Container.ID AS ConID,
Stock.GoodsID,
Depot.Name AS DepotName,
Stock.ID AS StockID,
LastCount
FROM
Depot
JOIN Container
ON (Depot.ID = Container.DepotID)
JOIN Stock
ON (Container.ID = Stock.ConID)
)
SELECT
DepotID,
GoodsID,
DepotName,
SUM(LastCount) AS StockCount
FROM
stockCTE
WHERE
( SELECT
COUNT(1)
FROM
stockCTE topn
WHERE
topn.DepotID = stockCTE.DepotID
AND topn.ConID = stockCTE.ConID
AND topn.GoodsID = stockCTE.GoodsID
AND stockCTE.StockID < topn.StockID
) < 1
GROUP BY
DepotID,
GoodsID,
DepotName

DepotID GoodsID DepotName StockCount
----------- ----------- ---------- -----------
1 1 商品仓 2
3 1 成品二仓 60

(2 行受影响)

热心网友 时间:2022-04-08 23:40

没测试啊,楼主将就下,或者贴测试数据脚本出来 :)
借 wangqing999的测试数据修改了下
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
结果
-----------

DEPOTID GOODSID NAME
----------- ----------- ---------- -----------
3 1 成品二仓 60
1 1 商品仓 2

(2 行受影响)

热心网友 时间:2022-04-09 01:15

select d.id deoptid,t.goodsid,d.[name],t.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

我靠刚一写完就看到这么多答案了,不过测试了下都在报错 各位还是要注意下要求

热心网友 时间:2022-04-09 03:06

declare @Depot TABLE(ID int, name varchar(50));
declare @Container TABLE(ID int, DepotID int);
declare @stock TABLE(ID int, ConID int, GoodsID int, InCount int, OutCount int, LastCount int);

INSERT INTO @Depot VALUES(1, 'M');
INSERT INTO @Depot VALUES(2, 'P_1');
INSERT INTO @Depot VALUES(3, 'P_2');

INSERT INTO @Container VALUES(3, 2);
INSERT INTO @Container VALUES(21, 3);
INSERT INTO @Container VALUES(7, 1);
INSERT INTO @Container VALUES(34, 1);

INSERT INTO @stock VALUES(1, 34, 1, 40, 0, 40);
INSERT INTO @stock VALUES(2, 34, 1, 0, 26, 14);
INSERT INTO @stock VALUES(3, 34, 1, 5, 0, 19);
INSERT INTO @stock VALUES(4, 34, 1, 0, 17, 2);
INSERT INTO @stock VALUES(5, 21, 1, 67, 0, 67);
INSERT INTO @stock VALUES(6, 21, 1, 0, 10, 57);
INSERT INTO @stock VALUES(7, 21, 1, 3, 0, 60);
INSERT INTO @stock VALUES(8, 7, 1, 5, 0, 5);
INSERT INTO @stock VALUES(9, 7, 1, 0, 5, 0);
------------- 前面都是准备数据,真正的查询从这里开始。
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

热心网友 时间:2022-04-09 05:14

既然看完了这么长的问题不写点不行啊,话说我也不知道行不行
select DepotID,max(GoodsID),max(DepotName),sum(LastCount)
from Container,Stock,Depot where ConID=Container.ID and Depot.ID=DepotID
and Stock.ID in (select max(ID) from Stock where GoodsID=1 group by ConID)
group by DepotID
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么样制作个人简历 上海海事大学对外交流多麽出国会不会容易一些 上海海事大学提前批今年要几号才能出来 怎么查找大学家长群 北京慧学堂在线教育学校的老师打电话来说要交3480元钱,给孩子半年的在... 左脸颊长青春痘是什么原因? 某商店上午9:00开始营业全天营业8小时下午几点关门 (2012?泗县模拟)某商店每天10:00-18:00营业,全天营业88小时. 某商店每天9:20-18:00营业,全天营业()小时。老师早上7:30到校,下午4... 商场营业时间是上午8:00-下午6:00,一位顾客向一位老先生嗯打听时间了... 求One Love中文译音歌词 歌曲《onelove》求歌词谐音。谢谢。。 有大神有2020年上映的三瓶由布子&#47;浪川大辅&#47;小林由美子主演的日本动画《数码宝贝》高清免费的网盘链接吗 急!求用友数据库(SQL)相关的练习题,最好连答案都有~·~请求请求啦... 大众下面带dnidcon是什么车? 求windows7旗舰版升级密钥,产品ID00346-OEM-8992752-50213 有的发我邮箱: 594826053@qq.com ID账号为什么会出现con ARASHI 岚 二宫和也和相叶雅纪在这个视频里面3分24秒开始的CON 密录KISS是哪一场? 篆刻的“刻”字在字体转换器的经典繁印篆体中为什么缺一笔? 岩字篆刻怎么转换,最好有图,谢谢。 纂体字在线翻译 篆刻字体转换的意义 篆刻字体转换有什么影响 怎样在线翻译纂体字 邱远宁的字体转换 求篆刻字体转换 要图 篆刻字体转换的缺点是什么 纂体字转换器 篆体字转换成简体字 篆刻字体怎样转换成为简体 亲们,求SuJu《ONE LOVE》中文谐音歌词 苹果ID后缀设置con而电信是cn 求one love汉字谐音歌词 w-inds 《one love》歌词中文谐音 求one love的歌词 要中文译音【loveholic】 谁有ONELOVE(SJ恩赫、奎贤、历旭)的歌词,要那种读音,而且是用中文的读音,拜托了 onelove歌词翻译 one love歌词 ONE LOVE 歌的全部歌词翻译成中文全部 one love的中文版 one i love 的中文歌词?? 岚one love 中文歌词 一首很可爱的英文歌,里面有段用汉语唱的一一一二一一二三四五六七 用basement(地下室)cabinet(橱柜)curtains(窗帘)dryer(烘干机)造句,各一句,越短越好 跪求《我心永恒》--泰坦尼克号主题曲 罗马音译歌词! 橱柜对子怎么写? onelove这个歌曲循环一天了,有能破的么 卖火柴的小女孩 生字 求岚的one love的歌词. 问下,那位常给日语歌填写中文版歌词的作词人陈星宇,是属于哪家唱片公司的?