原表数据:
类别   节目名  发布时间
------------------------
电影   电影片名   2005-1-1
电影   电影片名   2005-1-2 
电影   电影片名   2005-1-3
电视剧 电视剧片名 2005-2-1
电视剧 电视剧片名 2005-2-2
电视剧 电视剧片名 2005-2-3
体育   体育片名   2005-3-1
体育   体育片名   2005-3-2
体育   体育片名   2005-3-3要求输出:
类别   节目名  发布时间
------------------------
电影   电影片名   2005-1-3
电视剧 电视剧片名 2005-2-3
体育   体育片名   2005-3-3电影   电影片名   2005-1-2
电视剧 电视剧片名 2005-2-2
体育   体育片名   2005-3-2电影   电影片名   2005-1-1
电视剧 电视剧片名 2005-2-1
体育   体育片名   2005-3-1电影片名、电视剧片名、体育片名只是代表节目名称,如《暗战》、《NBA99》等

解决方案 »

  1.   

    declare @t table(类别 varchar(10),节目名 varchar(10),发布时间 varchar(10))
    insert into @t select '电影'   ,'电影片名'   ,'2005-1-1'
    union all select '电影'   ,'电影片名'   ,'2005-1-2' 
    union all select '电影'   ,'电影片名'   ,'2005-1-3'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-1'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-2'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-3'
    union all select '体育'   ,'体育片名'   ,'2005-3-1'
    union all select '体育'   ,'体育片名'   ,'2005-3-2'
    union all select '体育'   ,'体育片名'   ,'2005-3-3'select * from @t order by right(发布时间,1) desc,charindex(','+类别+',',',电影,电视剧,体育,')--这样?
      

  2.   

    --这次盗版一下:select * from 电影节目表 order by  right(发布时间,charindex('-',reverse(发布时间))-1) desc,charindex(','+类别+',',',电影,电视剧,体育,')
      

  3.   

    --我上面那个日期变成两位会有问题。按itblog这样就可以了declare @t table(类别 varchar(10),节目名 varchar(10),发布时间 varchar(10))
    insert into @t select '电影'   ,'电影片名'   ,'2005-1-1'
    union all select '电影'   ,'电影片名'   ,'2005-1-2' 
    union all select '电影'   ,'电影片名'   ,'2005-1-3'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-1'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-2'
    union all select '电视剧' ,'电视剧片名' ,'2005-2-3'
    union all select '体育'   ,'体育片名'   ,'2005-3-1'
    union all select '体育'   ,'体育片名'   ,'2005-3-2'
    union all select '体育'   ,'体育片名'   ,'2005-3-3'select * from @t order by right(发布时间,charindex('-',reverse(发布时间))-1) desc,charindex(','+类别+',',',电影,电视剧,体育,')
      

  4.   

    那為什麼不這樣呢??declare @t table(类别 Nvarchar(10),节目名 Nvarchar(10),发布时间 varchar(10))
    insert into @t select N'电影'   ,N'电影片名'   ,'2005-1-1'
    union all select N'电影'   ,N'电影片名'   ,'2005-1-2' 
    union all select N'电影'   ,N'电影片名'   ,'2005-1-3'
    union all select N'电视剧' ,N'电视剧片名' ,'2005-2-1'
    union all select N'电视剧' ,N'电视剧片名' ,'2005-2-2'
    union all select N'电视剧' ,N'电视剧片名' ,'2005-2-3'
    union all select N'体育'   ,N'体育片名'   ,'2005-3-1'
    union all select N'体育'   ,N'体育片名'   ,'2005-3-2'
    union all select N'体育'   ,N'体育片名'   ,'2005-3-3'select * from @t order by Day(发布时间) desc,charindex(','+类别+',',N',电影,电视剧,体育,')