SELECT   ANS_ID AS 会话ID, CONVERT(VARCHAR(12), [SayTime], 108) AS 时间, Saying as 提问者, Listening as 提问对象, ChatsContent as 提问内容, RoomID
FROM         ChatsRecord_ANS
WHERE     (Listening = '领导2' AND ANS_BEGIN=0)
ORDER BY ANS_ID,SayTime结果:
1+领导2[1] 14:28:04 1 领导2 32323232 2
10+领导2[1] 11:58:04 10 领导2 电视大赛的 2
10+领导2[1] 11:58:19 10 领导2 dsdsdsdsdsd 2
10+领导2[1] 11:58:58 10 领导2 很尴尬 2
3+领导2[1] 11:53:13 3 领导2 对方答复 2
3+领导2[1] 11:58:11 3 领导2 第三代 2
3+领导2[1] 11:59:02 3 领导2 规范共分 2
侠客+领导2[1] 12:03:29 侠客 领导2 fd f d 2我想要的结果是同一个“ANS_ID”的行在一起,并且“SayTime”按照时间先后排序。

解决方案 »

  1.   

    补充一下:“ANS_ID”出现的先后是按照“SayTime”最早的一个时间来决定的。
      

  2.   

    比如:这一行    
    1+领导2[1] 14:28:04 1 领导2 32323232 2 “ANS_ID”:1+领导2[1] 中14:28:04是最早的时间,比起其他“ANS_ID”的时间都要迟,我想实现放在后面。
      

  3.   

    我想要的效果是这样的:3+领导2[1] 11:53:13 3 领导2 对方答复 2
    3+领导2[1] 11:58:11 3 领导2 第三代 2
    3+领导2[1] 11:59:02 3 领导2 规范共分 210+领导2[1] 11:58:04 10 领导2 电视大赛的 2
    10+领导2[1] 11:58:19 10 领导2 dsdsdsdsdsd 2
    10+领导2[1] 11:58:58 10 领导2 很尴尬 2侠客+领导2[1] 12:03:29 侠客 领导2 fd f d 2 1+领导2[1] 14:28:04 1 领导2 32323232 2
      

  4.   

    "3+领导2[1]"这个是一个字段里面的内容?看你最开始给的语句好象是
    ANS_ID 这个字段?
      

  5.   

    To CN_SQL:
    "3+领导2[1]" 是字段ANS_ID的内容。
      

  6.   


    合并分拆表_整理贴1
    http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html
      

  7.   

    你要的结果只能在程序中用递归来实现吧
    你说的问题不只是“补充一下:“ANS_ID”出现的先后是按照“SayTime”最早的一个时间来决定的。”
    每一条数据都会出来这个
      

  8.   

    OK,按照你给的数据和你想要的数据,好象你的需求应该是这样,
    先按时间排序,再按会话ID前面的数字排序?
      

  9.   

    to CN_SQL:
    先按时间排序,再按整个会话ID排序(相同的会话ID排在一起)。
      

  10.   


    这行之所以会跑在前面去,是因为日期比较早吧这样试试SELECT  ANS_ID AS 会话ID, CONVERT(VARCHAR(12), [SayTime], 108) AS 时间, Saying as 提问者, Listening as 提问对象, ChatsContent as 提问内容, RoomID
    FROM        ChatsRecord_ANS
    WHERE    (Listening = '领导2' AND ANS_BEGIN=0)
    ORDER BY ANS_ID,cast('2008-01-01 '+CONVERT(VARCHAR(12),SayTime, 108) as datetime)
      

  11.   

    类似子BBS,按提问的先后顺序排列,再按回答的先后时间排列
    如果这个BBS,有且只有两层,或许还可以用SQL语句实现,如果是超过两层,肯定只能用递归了