Sql Server字符串字段如何相加?这个问题很难吗?发贴一天了,都还没有人回复呢?请各位帮忙想想办法,在此谢谢各位了.(100分)

  • 主题发起人 主题发起人 qutwah
  • 开始时间 开始时间
Q

qutwah

Unregistered / Unconfirmed
GUEST, unregistred user!
有一表结构如下:<br>Autoid Bookid &nbsp; &nbsp;aTime<br>1 &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp; 02:10:00<br>2 &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp; 02:10:00<br>3 &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp; 18:10:00<br>4 &nbsp; &nbsp; &nbsp;5 &nbsp; &nbsp; &nbsp; &nbsp; 02:20:20<br>5 &nbsp; &nbsp; &nbsp;7 &nbsp; &nbsp; &nbsp; &nbsp; 03:20:10<br>6 &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp; 20:20:00 <br>要得到如下结果<br>Bookid &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TimeStr<br>2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[02:10:00][18:10:00][20:20:00]<br>5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[02:20:20]<br>7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[03:20:10]<br><br>注意,对于相同的记录,只取一次,如Autoid=1及Autoid=2的记录是相同的,只取一次!这条SQL语句该如何写呢?
 
兄弟今天放假啊 &nbsp;你的問題在delphi 中操作比較容易 因為我不太會sql 首先select atime from 表 group by atime 然后update 把 atime 字符連接起來 在group by bookid<br>大概就是這樣了
 
建立存储过程处理吧。
 
谢谢楼上两位的回复.<br>to ukn_ma4<br>你的方法我也曾想过,关键是"然后update 把 atime 字符連接起來 在group by bookid<br>",怎么连起来呢?这个是问题的关键.
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3686192
 
我以前做过类似的业务,可以在SQL中自定义一个函数,然后再select 时调用这个自定义函数就可以了。<br>&nbsp;create function retu_TimeStr (@aBookId int)<br>&nbsp;returns varchar(2000) &nbsp;--可以按你的业务量增长长度<br>&nbsp;begin<br>&nbsp; &nbsp; declare @str varchar(2000)<br>&nbsp; &nbsp; set @str=''<br>&nbsp; &nbsp; select @str=@str+'['+convert(varchar(10),aTime,120) +']' from table_name &nbsp; &nbsp;where bookid=@aBookId<br>&nbsp; return(@str)<br>&nbsp;end <br><br>那么,要查询语句中就可以直接调用此函数了<br>&nbsp; select distinct BookId,aTime,dbo.retu_TimeStr(BookId) as TimeStr from table_name<br><br>对于相同的只取一次,你可以把函数里那个from table_name 改成(select distinct BookID,aTime from Table_name ) as b 限制一下应该就可以了
 
楼上正解!!我正想给你写这个函数呢,楼上先一步!1
 
to tgbdlwm<br>我按你的方法,当记录数比较大时(我测试的记录量为28000条)消耗的时间很长,有没有办法改善?
 
理论上讲,函数我没想到更好的办法,但查询那步我没试过,但可以过滤一次,再从过滤的临时表(或者查询语句)中,再用自定义函数,那样在源表重复记录多的情况下,可能会速度快一些,如果重复记录少,则速度可能会更慢,只是理论推断,没试过。
 
to tgbdlwm<br>我按你的方法,当记录数比较大时(我测试的记录量为28000条)消耗的时间很长,有没有办法改善?<br><br>--- 查询单个的BOOKID用tgbdlwm的方法不错的<br>-- 统计 用临时表呀<br>&nbsp; &nbsp;取得所有distinct BOOKID<br>&nbsp; &nbsp;然后用 游标<br>&nbsp; &nbsp; update 临时表<br>&nbsp; &nbsp;select * from 临时表
 
刚才说的办法不行,会重复查询几次源表的,想想效率更低。
 
用一个嵌套数据库查询不就可以了?
 
后退
顶部