这个问题问了好几天。虽然问题我解决了,但算法效率感觉不是很好.

My_first 2002-12-28 02:31:35
declare @i int --当查询结果小于100条记录的时候就不添加空行,如果小于100行的时候添加100-Count(*)条记录到#table2里面.
select @i=count(khbh) from #table2
if @i<100
Begin
(select identity(int,1,1) as khbh,null as A,null as B,null as C, null as D,Null as E into #temp1 from (select top 100 * from sysobjects) a)
select khbh,类型,单号,限定日期,欠款金额,ordertype From #table2
union all
SELECT khbh,null,null,null,null,Null From #temp1
where #temp1.khbh>@i
drop table #temp1
end else
select * from #table2

能不能用while @i<100
begin

end; 为替代。或者有更好的办法。因为我上面的写法还要借助sysobjects
先谢谢各位朋友。
这个题目上,判断#table2的记录数是否小于100, 如果小于则用空行填补后面的行。 如果大于则什么都不做. 照样输出。

再次感谢!!! , 从上星期三到现在呀!!.

...全文
36 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝天 2002-12-29
  • 打赏
  • 举报
回复
关于固定表,你可能没明白我的意思,我的意思固定表就是一个只读表。里面就100条数据。
从1,null,null,null,null,Null
到100,null,null,null,null,Null
免除你每次生成之苦

不过因为只有100条,用循环生成也可以
那就是

declare @i int
declare @temp table (a int ,b int, c int, d int, e int , f int )
select @i=count(khbh) from #table2
while @i<100
begin
insert @temp values ( @i,null,null,null,null,Null )
select @i=i+1
end;
select khbh,类型,单号,限定日期,欠款金额,ordertype From #table2
union all select * from @temp



My_first 2002-12-29
  • 打赏
  • 举报
回复
while @i<100
begin
select @i=i+1//这条应该放在这里,生成的是1..100//放在下面是1..99
insert @temp values ( @i,null,null,null,null,Null )
end;
My_first 2002-12-29
  • 打赏
  • 举报
回复

上次写的行呀,上面那段程序就是上次你写的我改过之后的程序,
可以用,我现在想改进一下呀,因为上次那个借助了sysobjects表,或其它的表,但这个表必须有100条记录。 移植不太好干, 昨天我想来想去的,就来问问还有没有较好的办法,
固定表提高速度,但有并发问题, 就大力说的这点,我最后决定还是用表变量了。今天晚上就改。

各位谢谢了。
pengdali 2002-12-28
  • 打赏
  • 举报
回复
对!固定表提高速度,但有并发问题,我上次写的那个不行吗??
pengdali 2002-12-28
  • 打赏
  • 举报
回复
哈哈!找了半天,在这里呀!!!!
My_first 2002-12-28
  • 打赏
  • 举报
回复
两位大侠讲都有理。
因为我有非常多的查询都要这么做。 但查询最多也只添加100条空行,用固定的表,速度很快,就是我一开始做的用sysobjects,这个表, 或者是我在数据库里另外建 表, 我不想用的原因是,一个查询还必须依懒一个额外的表 .
直接在里面控制更好,
速度我想也应该没什么影响。不就是一百条吗?<---我问自己?
j9988 2002-12-28
  • 打赏
  • 举报
回复
我也觉得老纳说得对,用固定表好,快多了。
蓝天 2002-12-28
  • 打赏
  • 举报
回复
我觉得还是有个固定表好,省得你每次都要产生那么多行空数据。
My_first 2002-12-28
  • 打赏
  • 举报
回复
谢谢老纳的讲解.

我理解了。那我还是改用你的做法。用表变量。我想应该比我上面那样写来得快。对于每个用户调用时这个变量都是不一样的,就像定义的i,int类型一样,用完了就释放掉了。是这样的吧。

说一个笑话,我一开始用临时表的时候,用while做了1000个临时表。占内存20多M, 所以在以前写的程序里都用的是临时表。

以后做那都改为表变量了。又让我进弯路子了。

蓝天 2002-12-28
  • 打赏
  • 举报
回复
可将函数和变量声明为 table 类型。table 变量可用于函数、存储过程和批处理中。

尽可能使用表变量而不使用临时表。table 变量有以下优点:

table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:

INSERT INTO table_variable EXEC 存储过程。

SELECT select_list INTO table_variable 语句。

在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。

在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。


涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。
不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。

My_first 2002-12-28
  • 打赏
  • 举报
回复
不对,听大力以前讲是表变量。 我对这个概念不了解。他是怎样释放的。

就样普通的i int 一样定义和释放吗?

能讲一下表变量的故事吗?

晚上一定来结贴。
My_first 2002-12-28
  • 打赏
  • 举报
回复
仔细一看代码 @temp, 是内存表是吧。我以前没有用过。
My_first 2002-12-28
  • 打赏
  • 举报
回复
不好意思,下午出去了。
为什么用循环?
我是为了考虑速度呀 。
我看了上面这段代码,照这样做,速度还没有一开始的快
是吧.
蓝天 2002-12-28
  • 打赏
  • 举报
回复
????
为什么用循环?
declare @i int
declare @temp table (a int ,b int, c int, d int, e int , f int )
select @i=count(khbh) from #table2
while @i<100
begin
insert @temp values ( @i,null,null,null,null,Null )
select @i=i+1
end;
select khbh,类型,单号,限定日期,欠款金额,ordertype From #table2
union all select * from @temp



My_first 2002-12-28
  • 打赏
  • 举报
回复
sky_blue(老衲)
可以这么写吗?
while @i<100
begin
select khbh,类型,单号,限定日期,欠款金额,ordertype From #table2
union all
SELECT @i,null,null,null,null,Null From #temp1
end;

蓝天 2002-12-28
  • 打赏
  • 举报
回复
建一个固定表
比如temp
select identity(int,1,1) as khbh,null as A,null as B,null as C, null as D,Null as E into temp1 from (select top 100 * from sysobjects) a
------------------------------------------
每次查询的时候只需要这么做:
select khbh,类型,单号,限定日期,欠款金额,ordertype From table2 union
select * from temp where khbh >
(select count(khbh) from table2)
程序 = 数据结构 + 算法  程序是为了解决实际而存在的。然而为了解决,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法                ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。 本视频由微软全球最有价值专家尹成录制,拒绝念PPT,代码实战数据结构与算法导论。除了传统数据结构算法,加入高并发线程安全数据结构,分布式负载均衡算法,分布式哈希表,分布式排序等等现代算法。  算法,晦涩难懂,却又是IT领域受重视的素养之一。可以说,算法能力往往决定了一个程序员能够走多远。因此,BAT/FLAG等国内外各大名企非常喜欢在面试环节考核求职者的算法编程,这也成为了无数准程序员们过不去的一道“坎”。如何入门并成为一名出色的算法工程师?但无论半路出家还是科班出身,除学生时代搞算法竞赛的同学外真正用心学习过算法与数据结构太少太少。对于后期想要学习算法与数据结构却不得不面对以下:没有自己的知识框架,无法关联知识点,学习效率低有疑而无人解答,有无法理解全靠猜测,一个卡好几天市面上资料题解质量参差不齐,正确性未可知Google算法-工程师尹成大哥学习算法

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧