功能,定义一个视图,表table中有两个字段a,b 当a=b时 和 a<>b 时,b的值分别为a和nullselect
  case 
    when a=b then b
    when a<>b then null
  end as b, a
  from tablesql server视图中不支持case,如何实现这个功能?

解决方案 »

  1.   

    select b,a from table where a=b
    union
    select null,a from table where a<>b
      

  2.   

    跟case的问题一样,  union  在视图中也不能用,真是要命!  windindance(风舞轻扬),再来!
      

  3.   

    查询设计器不支持 UNION SQL 构造。
      

  4.   

    另外……我试了,SQL SERVER2000支持在视图中用case 的。
      

  5.   

    union也可以呀?
    你用的什么版本?7。0?
      

  6.   

    select  b from where a=b 
    union
    select '' from table where a<>b
      

  7.   

    windindance(风舞轻扬) ( )
    :居然是过了,看来没有问题
      

  8.   

    :(,在我这怎么一个都不可以呀
    表A中的内容为:
    1,a
    2,b
    3,c
    表B中的内容为:
    1,dd
    2,ee我现在想得到这样的结果:即视图AB(C,D,E)
    1,a,dd
    2,b,null
    3,c,null
    1,a,null
    2,b,ee
    3,c,null
      

  9.   

    恩,确实,虽然设计器出现了“查询设计器不支持 UNION SQL 构造”
    “查询设计器不支持 CASE 构造”但是,确定后,仍然 可以正确的查询出数据。windindance(风舞轻扬),结贴!
      

  10.   

    在我这运行不对嘛
    NULL 1 
    NULL 1 
    NULL 2 
    NULL 2 
    NULL 3 
    NULL 3
      

  11.   

    :(,在我这怎么一个都不可以呀
    表A(C,D)中的内容为:
    1,a
    2,b
    3,c
    表B(C,E)中的内容为:
    1,dd
    2,ee
    其中A(C),B(C)分别为两表关键字,意义相同我现在想得到这样的结果:即视图AB(C,D,E)        
    1,a,dd
    2,b,null
    3,c,null
    1,a,null
    2,b,ee
    3,c,null
      

  12.   

    VBfreegirl:
    试试
    select * from A full join B on a.C = b.C
      

  13.   

    搞定了
    SELECT dbo.A.A, dbo.A.B, dbo.B.B AS C
    FROM dbo.A INNER JOIN
          dbo.B ON dbo.A.A = dbo.B.A
    UNION ALL
    SELECT dbo.A.A, dbo.A.B, NULL AS C
    FROM dbo.A INNER JOIN
          dbo.B ON dbo.A.A <> dbo.B.A多谢诸位捧场!