本帖最后由 yz626262 于 2011-03-19 22:57:13 编辑

解决方案 »

  1.   

    select
      case id0 when 1 then aa else '' end as aa,bb
    from
      (select id0=row_number()over(partition by aa order by getdate(),* from tb)t
      
      

  2.   

    create table #temp(aa nvarchar(10), id int, bb nvarchar(10))
    insert #temp
    select N'女人', '1', N'30岁' union all
    select N'女人', '2', N'25岁' union all
    select N'女人', '3', N'12岁' union all
    select N'男人', '1', N'35岁' union all
    select N'男人', '2', N'45岁' union all
    select N'男人', '3', N'15岁'
    go
    --SQL:
    select
    aa = case when id = 1 then aa else '' end,
    id = '',
    bb
    from #temp
    /*
    aa id bb
    女人 30岁
    25岁
    12岁
    男人 35岁
    45岁
    15岁
    */
      

  3.   

    --SQL:
    DECLARE @temp nvarchar(10), @IsChange int
    select @temp = N'', @IsChange = 0
    update #temp
    set aa = case @IsChange when 1 then aa else '' end,
    @IsChange = case when @temp <> aa then 1 else 0 end,
    @temp = aa
    go
    select aa, bb from #temp
    /*
    aa bb
    女人 30岁
    25岁
    12岁
    男人 35岁
    45岁
    15岁
    */[/code]
      

  4.   

    create table #temp(aa nvarchar(10), id int, bb nvarchar(10))
    insert #temp
    select N'女人', '1', N'30岁' union all
    select N'女人', '2', N'25岁' union all
    select N'女人', '3', N'12岁' union all
    select N'男人', '1', N'35岁' union all
    select N'男人', '2', N'45岁' union all
    select N'男人', '3', N'15岁'
    go
    --SQL:
    DECLARE @temp nvarchar(10), @IsChange int
    select @temp = N'', @IsChange = 0
    update #temp
    set aa = case @IsChange when 1 then aa else '' end,
    @IsChange = case when @temp <> aa then 1 else 0 end,
    @temp = aa
    go
    select aa, bb from #temp
    /*
    aa bb
    女人 30岁
    25岁
    12岁
    男人 35岁
    45岁
    15岁
    */
      

  5.   

    select aaa=case when a.id=b.minid then a.aa else '' end,a.bb
    from #tmp a
    left join (select aa,minID=min(id) from #tmp group by aa) b on a.aa=b.aa
    order by a.aa,a.id