sql – 具有变量的SELECT TOP N
发布时间:2020-05-23 07:38:24 所属栏目:MsSql 来源:互联网
导读:我在SQL表中有以下数据 Temp表变量@RndQuesnCount包含这个数据, Recid conceptID MinDisplayCount1 3839 22 4802 3 问题表:QuesTable QuesCompID Ques_ConceptDtlID 88 4802 89 4802 90
|
我在SQL表中有以下数据 Temp表变量@RndQuesnCount包含这个数据, Recid conceptID MinDisplayCount 1 3839 2 2 4802 3 问题表:QuesTable QuesCompID Ques_ConceptDtlID 88 4802 89 4802 90 4802 91 4802 92 4802 93 4802 我想显示的是对于概念id在@RndQuesnCount中的问题的最小显示数,所以现在的数据应该如下 QuesCompID Ques_ConceptDtlID 88 4802 89 4802 90 4802 因为conceptID(4802)在@RndQuesnCount表中具有最小显示数3. 任何人都可以帮我解决这个问题吗? 解决方法我想,使用ROW_NUMBER()和一个join可以获得结果.数据设置:declare @RndQuesnCount table (recid int,conceptid int,mindisplaycount int) insert into @RndQuesnCount(Recid,conceptID,MinDisplayCount) values (1,3839,2),(2,4802,3) declare @QuesTable table (QuesCompID int,Ques_ConceptDtlID int) insert into @QuesTable(QuesCompID,Ques_ConceptDtlID) values (88,4802),(89,(90,(91,(92,(93,4802) 查询: select
t.rn,t.QuesCompID,t.Ques_ConceptDtlID
from
@RndQuesnCount rqc
inner join
(select *,ROW_NUMBER() OVER (PARTITION BY Ques_ConceptDtlID ORDER BY QuesCompID) rn from @QuesTable) t
on
rqc.conceptID = t.Ques_ConceptDtlID and
rqc.MinDisplayCount >= t.rn
结果: rn QuesCompID Ques_ConceptDtlID -------------------- ----------- ----------------- 1 88 4802 2 89 4802 3 90 4802 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- CentOS系统下Redis安装和自启动配置的步骤
- 使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值
- SQL Server 数据库中的表、字段sql语句用法
- .net – 在transactionscope中打开sql连接很重要
- sql-server – 如何从sql server表中查看已删除的记录?
- redis命令行查看中文不乱码的方法(十六进制字符串处理)
- sql-server – 在SQL Management Studio 2012中创建新服务器
- entity-framework – 抑制在Entity Framework核心中登录的S
- 不包括cfqueryparam的cfsqltype对sql注入保护仍然有用吗?
- .net – 用LINQ修改’字符串或二进制数据的任何聪明的方式都
