sql 中top中的变量为count()解决办法
用delphi操作mssqlserver2000数据库,想实现如下功能:从一个表中找出符合条件一的记录数,记作n,再这个表中选出符合条件二的前n条记录。(已知条件二包含条...
用delphi操作mssql server2000数据库,想实现如下功能:
从一个表中找出符合条件一的记录数,记作n,再这个表中选出符合条件二的前n条记录。(已知条件二包含条件一,即符合条件二的记录多)。
因select top n在server2000中不能用变量,请问用什么办法能在Delphi+server2000中实现此功能呢?
初步思路:(语法错误)select top (select count(*)from table1 where 条件一)* from table1 where 条件二
非常非常的谢谢,可是我的bh是varchar(30),是否将int直接换成varchar(30),最后的cast(@bh as varchar(20))还需要变化吗? 在查询分析器中查出的是空记录,是由空格的原因吗?
还有,还有在Delphi中,对应with storedproc1 do的语句该怎么写啊。在storedproc1中设置参数只有一个@bh吗。
感谢ing....... 展开
从一个表中找出符合条件一的记录数,记作n,再这个表中选出符合条件二的前n条记录。(已知条件二包含条件一,即符合条件二的记录多)。
因select top n在server2000中不能用变量,请问用什么办法能在Delphi+server2000中实现此功能呢?
初步思路:(语法错误)select top (select count(*)from table1 where 条件一)* from table1 where 条件二
非常非常的谢谢,可是我的bh是varchar(30),是否将int直接换成varchar(30),最后的cast(@bh as varchar(20))还需要变化吗? 在查询分析器中查出的是空记录,是由空格的原因吗?
还有,还有在Delphi中,对应with storedproc1 do的语句该怎么写啊。在storedproc1中设置参数只有一个@bh吗。
感谢ing....... 展开
若以下回答无法解决问题,邀请你更新回答
展开全部
把需求做成存储过程,然后再Delphi里边调用就行了:
你的编号是varchar30,那么直接用下面的语句就型了,至于在Delphi里边怎么调用过程你得查查手册,这个我也记不清了,不好意思!
create procedure p_sel @bh varchar(30) --如果你的编号为字符型的字段的话,用这个过程
as
begin
declare @count int,@sql varchar(8000)
select @count=count(*) from wllxxn where 标志 = 0 and 编号=@bh
select @sql='select top '+cast(@count as varchar(30))+' * from wllxxn where 标志=1 and 编号='''+@bh+''''
exec (@sql)
end
你的编号是varchar30,那么直接用下面的语句就型了,至于在Delphi里边怎么调用过程你得查查手册,这个我也记不清了,不好意思!
create procedure p_sel @bh varchar(30) --如果你的编号为字符型的字段的话,用这个过程
as
begin
declare @count int,@sql varchar(8000)
select @count=count(*) from wllxxn where 标志 = 0 and 编号=@bh
select @sql='select top '+cast(@count as varchar(30))+' * from wllxxn where 标志=1 and 编号='''+@bh+''''
exec (@sql)
end
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
支持一下感觉挺不错的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询