X----崗位----X:X-姓名-X X--------聯系方式--------X   X----崗位----X:X-姓名-X X--------聯系方式--------X
X----崗位----X:X-姓名-X X--------聯系方式--------X   X----崗位----X:X-姓名-X X--------聯系方式--------X
X----崗位----X:X-姓名-X X--------聯系方式--------X   X----崗位----X:X-姓名-X X--------聯系方式--------X
X----崗位----X:X-姓名-X X--------聯系方式--------X   X----崗位----X:X-姓名-X X--------聯系方式--------X
X----崗位----X:X-姓名-X X--------聯系方式--------X   X----崗位----X:X-姓名-X X--------聯系方式--------X這里本來是有十條記錄的,我想一行顯示兩條記錄,用sql 語句怎么合并呢?

解决方案 »

  1.   

    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X本來是這樣的,但我想打印成:X----崗位----X:X-姓名-X X--------聯系方式--------X X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X X----崗位----X:X-姓名-X X--------聯系方式--------X
    X----崗位----X:X-姓名-X X--------聯系方式--------X X----崗位----X:X-姓名-X X--------聯系方式--------X
     
    就是把先前那種格式的兩條記錄合并為一條記錄,怎么做呢 ?
      

  2.   


    ;with ach as
    (
        select *,rid=row_number() over (order by getdate())
    from tb   
    )select a.*,b.*
    from ach a,ach b
    where a.rid%2 = 1 and b.rid%2 = 0 and a.rid=b.rid-1
      

  3.   


    --方法应该类似下面,由于没提供数据,自己依葫芦画瓢改下好了
    select proid,cost,
    max(case when linenum =1 then value else '' END) 1,
    max(case when linenum =2 then value else '' END) 2,
    max(case when linenum =3 then value else '' END) 3,
    max(case when linenum =3 then value else '' END) 4,
    max(case when linenum =3 then value else '' END) 5
    from A 
    group by proid,cost
      

  4.   


    create table tb(id int,ic int)
    insert into tb
    select 1,1 union all
    select 1,2 union all
    select 1,3 union all
    select 1,4 union all
    select 1,5
    go;with ach as
    (
        select *,rid=row_number() over (order by getdate())
    from tb   
    )select a.*,b.*
    from ach a left join ach b on b.rid%2 = 0 and a.rid=b.rid-1
    where a.rid%2 = 1drop table tb/******************id          ic          rid                  id          ic          rid
    ----------- ----------- -------------------- ----------- ----------- --------------------
    1           1           1                    1           2           2
    1           3           3                    1           4           4
    1           5           5                    NULL        NULL        NULL(3 行受影响)
    2000用临时表和identity代替。
      

  5.   

    ;with cte as
    (
        select *,no=row_number() over (order by getdate())
        from tb   
    )select *
    from cte a,cte b
    where a.no%2 = 1 and b.no%2 = 0 and a.no<b.no
      

  6.   


    謝謝你,不過,我已經找到另外一種格式
    select m.param_id ,m.class_name ,n.class_name ,n.param_id from
    (select param_id,class_name ,row_number()over(order by getdate()) row from chd_code )m 
    inner join
    (select param_id,class_name ,row_number()over(order by getdate()) row from chd_code)n on m.row+1=n.row where m.row % 2=1 and n.row %2=0
    大家相互學習一下,能告訴我區別嗎?
      

  7.   

    一样的,不过是把05的cte改为子查询了。