惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
H
Heimdal Security Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
S
Securelist
P
Privacy International News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
博客园 - 叶小钗
J
Java Code Geeks
V
V2EX
博客园 - Franky
Spread Privacy
Spread Privacy
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
NISL@THU
NISL@THU
罗磊的独立博客
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
V
Visual Studio Blog

博客园 - billqi(岁月如水)

解除webservice上下传文件大小限制 [转贴]请不要做浮躁的人! BBS 水木清华站 msmq两个网域之间消息传输与接收测试总结 msmq消息队列使用及测试总结 PDA 应用领域 GPS的十大绝技 GSM - billqi(岁月如水) - 博客园 深圳面试提醒(特别针对女生) CRM功能架构 VMI的理念与应用 台湾供货商管理库存(VMI)导入指引 SMART原则与自我激励 msmq 之触发器 微软架构师网站 绩效考核的KPI及SMART原则 微软.net framework工具集帮助 2年前的建议书 Server群集部署? 新的天地
sql查询语句问题- sum求和的值作为查询条件
billqi(岁月如水) · 2005-02-18 · via 博客园 - billqi(岁月如水)
   

在物流系统开发过程中碰到这样一个问题,项目组的人讨论了很久用了这样的解决方法,

肯定还有地方需要优化,我先把我们的思路写出来,哪位朋友比较感兴趣,帮忙优化一下。

某储位档是已经按照优先级别排序的集合,字段有[储位代码(locationcode)储位产品存放数量(pilenum),优先级(level)]

现在要从该表中按照排好的顺序取出150个产品。如何最简单实现?

创建测试资料文件某储位档(test1)

the following is our sql script:

select identity(int,1,1) as rID,* into #test from test1

select * from #test

if not exists(select * from #test a where (select sum(pilenum) from #test where rID <= a.rID) <90)

           begin

                     select top 1 * from #test

           end

else

           begin

                     select * from #test a where (select sum(pilenum) from #test where rID <= a.rID) < 90

                     union (select * from #test where rID = (select max(rID) from #test a where (select sum(pilenum) from #test where rID <= a.rID) < 90)+1)

           end

drop table #test

executed result: 
    

rID locationcode  pilenum level
1 T-E03-2    34 1
2 T-E03-3    50 1
3 T-E03-6    50 1
4 T-E03-7    12 1
5 T-E03-8    80 2
6 T-E04-5    30 3
7 T-E04-7    50 2
rID locationcode  pilenum level
1 T-E03-2    34 1
2 T-E03-3    50 1
3 T-E03-6    50 1