本帖最后由 asp6152642 于 2011-11-17 11:11:12 编辑

解决方案 »

  1.   


    select max(case when devid = '001' then readingdata end) c1,
           max(case when devid = '002' then readingdata end) c2
    from appdata 
    group by receivetime 
    order by receivetime desc
      

  2.   

    --sql 2005
    select m.readingdata_001 , n.readingdata_002 from
    (select readingdata_001 , row_number() over(order by  receivetime desc) px from appdata where devid = '001') m
    full join
    (select readingdata_002 , row_number() over(order by  receivetime desc) px from appdata where devid = '002') n
    on m.px = n.px
      

  3.   

    SELECT a.readingdata,b.readingdata
    FROM 
    (select readingdata ,row=ROW_NUMBER()OVER(order by receivetime desc  )from appdata where devid = 001)a
    FULL JOIN 
    (select readingdata ,row=ROW_NUMBER()OVER(order by receivetime desc  ) from appdata where devid = 002 )b
    ON a.row=b.row
      

  4.   

    select
     max(case devid when  '001' then readingdata end) c1,
     max(case devid when  '002' then readingdata end) c2
    from
     appdata 
    group by
     receivetime 
    order by
     receivetime desc
      

  5.   


    select sum(case when devid='001' then readingdata else 0 end) as readingdatea1,
    SUM(case when  devid='002' then readingdata else 0 end ) as readingdatea2
    group by id --这里就写你的主键吧。
    -- 查看行转列方面的贴子。
      

  6.   

    --sql 2000
    select m.readingdata_001 , n.readingdata_002 from
    (select readingdata_001 , (select count(1) from appdata where devid = '001' and receivetime > t.receivetime) px from appdata t where devid = '001') m
    full join
    (select readingdata_002 , (select count(1) from appdata where devid = '002' and receivetime > t.receivetime) px from appdata t where devid = '002') n
    on m.px = n.px
      

  7.   

    像这样,楼主改改吧if object_id('tb','U') is not null
       drop table tb
    go
    create table tb
    (
     id int
    )
    go
    insert into tb
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 7 union all
    select 8 union all
    select 9
    go
    select a.id1,b.id1 from (
    select row=row_number() over(order by case when id<5 then id end),
           id1=case when id<5 then id end from tb 
    where case when id<5 then id end is not null
    ) a left join (
    select row=row_number() over(order by case when id>5 then id end),
           id1=case when id>5 then id end from tb 
    where case when id>5 then id end is not null
    ) b on a.row=b.row
    /*
    id1         id1
    ----------- -----------
    1           7
    2           8
    3           9
    4           NULL(4 行受影响)*/
      

  8.   


    if object_id('tb','U') is not null
       drop table tb
    go
    create table tb
    (
     id int
    )
    go
    insert into tb
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 7 union all
    select 8 union all
    select 9
    go
    select a.id1,b.id1 from (
    select row=row_number() over(order by case when id<5 then id end),
           id1=case when id<5 then id end from tb 
    where case when id<5 then id end is not null
    ) a left join (
    select row=row_number() over(order by case when id>5 then id end),
           id1=case when id>5 then id end from tb 
    where case when id>5 then id end is not null
    ) b on a.row=b.row
    /*
    id1         id1
    ----------- -----------
    1           7
    2           8
    3           9
    4           NULL(4 行受影响)*/