typeID   name
1        xiaohua   
0        bailiang
0        zhangdan
1        lihui    表如上 现在我要通过select语句读这个表产生一个如下视图yourname   myname
xxxx       xxxxx其中yourname和myname都是用的name字段,不同的是yourname要求typeID等于1,myname要求typeID等于0,请问这个select语句怎么写?   要求在DBGrid里显示.回答者100分送上.当场结分

解决方案 »

  1.   

    select myname=case when typeID=0 then name end,
    yourname=case when typeID=1 then name end
    from 表
      

  2.   

    select case when typeID=0 then name end as myname,
           case when typeID=1 then name end as yourname
    from 表
      

  3.   

    需要用临时表,视图做不了,用存储过程吧。
    sql server实现的方法:Create table tt(type int,name char(10))goinsert into tt
    select 1,'t1'
    union all
    select 1,'t2'
    union all
    select 0,'t3'
    union all
    select 0,'t4'go
    ------实现------
    select id=identity(int,1,1),* into #t1 from tt where type = 1select id=identity(int,1,1),* into #t2 from tt where type = 0select #t1.name as yourname , #t2.name as myname from #t1 full outer join #t2 on #t1.id = #t2.id
    ----------------
    go 
    drop table #t2
    drop table #t1
    drop table tt
      

  4.   

    select case when typeID=0 then name end as myname,
           case when typeID=1 then name end as yourname
    from 表
      

  5.   

    恩,是实现了,可现在DBGrid里显示的字段怎么有那么多空数据格啊,如果去掉呢?
      

  6.   

    我最终的效果是这样的
    myname     yourname
    bailiang   xiaohua
    zhangdan   lihui
      

  7.   

    你的name字段的类型设为varchar就不会产生空格了。
    现在的空格可以用ltrim(rtrim(字段名))来处理掉。
      

  8.   

    急啊,问题还没解决,大家继续啊
    我最终想要的效果是这样的myname     yourname
    bailiang   xiaohua
    zhangdan   lihui
      

  9.   

    你试过我帖出的SQL了吗?
    在查询分析器执行一下。
      

  10.   

    select case when typeID=0 then name end as myname,
           case when typeID=1 then name end as yourname
    from 表
    应该可以实现啊,
      

  11.   

    select case when typeID=0 then rtrim(name) end as myname,
           case when typeID=1 then rtrim(name) end as yourname
    from 表