SQL2000中有两个这样的表:
表1:tbA
Aid   Class Age  Price
----------------------
A001    2    30   200表2:tbB
Bid   Class NUm  Price
----------------------
B002    3    10   300现在想创建一个视图,实现下面的结果,Sql语句该如何写,望高手指点。
结果为:
Aid   Class  Age  Num Price
----------------------------
A001    2     30        200
B002    3          10   300也就是将两个表合并在一起,并且将表tbB中的列Bid合并到表tbA列Aid中,其他维持不变。

解决方案 »

  1.   


    select Aid ,Class,Age ,num=null,price from tba
    union all
    select Bid  ,Class,null,num,price from tbb
      

  2.   

    create view ab_vi as
    select Aid ,Class,Age ,num=null,price from tba
    union all
    select Bid  ,Class,null,num,price from tbb;select * from ab_vi;
      

  3.   


    --测试数据
    declare @table1 table(Aid char(4),class int ,age int,price dec(18,2))
    declare @table2 table(Bid char(4),class int ,num int,price dec(18,2))
    insert into @table1 select 'A001',    2 ,   30,  200 
    insert into @table2 select 'B002',    3 ,   10  ,300
    --查询
    select Aid,  Class, Age,null as NUm, Price  from @table1 union all
    select Bid,  Class,null as Age, NUm , Price from @table2
    --结果
    ------------------------------
    A001 2 30 NULL 200.00
    B002 3 NULL 10 300.00
      

  4.   

    SELECT 
    Aid , Class,  Age,  
    CASE WHEN Num IS NULL THEN '' ELSE LTRIM(NUM) END AS NUM , Price 
    FROM A UNION ALLSELECT 
    Aid , Class,
    CASE WHEN Age IS NULL THEN '' ELSE LTRIM(Age) END AS Age,NUM, Price 
    FROM B
      

  5.   

    select Aid , Class , cast(Age as varchar) age, num = '' ,  Price from tba
    union all
    select Aid , Class , Age = '' , cast(num as varchar) ,  Price from tbb
      

  6.   

    谢谢各位的指教,问题解决,结帖····pt1314917  测试成功
    luoyoumao  测试成功
    nianran    测试成功SQL77      报错错误信息:服务器: 消息 207,级别 16,状态 3,行 1
    列名 'Num' 无效。
    服务器: 消息 207,级别 16,状态 1,行 1
    列名 'Num' 无效。dawugui    列名Aid无效 select Aid , Class , cast(Age as varchar) age, num = '' ,  Price from tba
    union all
    select Aid , Class , Age = '' , cast(num as varchar) ,  Price from tbb应为:select Aid , Class , cast(Age as varchar) age, num = '' ,  Price from tba
    union all
    select Bid , Class , Age = '' , cast(num as varchar) ,  Price from tbb