Create view ViewDemo
As
Select V.*,count(*) as row_index
From (
Select v1,v2,v3 from T1    --1
Union
Select v1,v2,v3 from T2    --2
Union
Select v1,v2,v3 from T3  ) as V
group by v1,v2,v3

解决方案 »

  1.   

    v1,v2,v3的值有可能是重复的,不能用Group by。
      

  2.   

    如果单表(如T1)中v1,v2,v3有重复,
    那只能用函数或存储过程实现
      

  3.   

    to:WangZWang(阿来)
    能不能给个例子
      

  4.   

    ViewDemo(要得到的效果图)row_index      v1          v2           v3     
    1              A           B            C
    2              A           B            C
    3              C           E            R
    ......20             J           P            V                  --这是1的查询结果
    21             C           E            R
    ......50             J           P            V                  --这是2的查询结果
    51             C           E            R
    ......90             J           P            V                  --这是3的查询结果(v1,v2,v3的数据可能有重复)真的是没有一个人会吗????我不信。。
      

  5.   

    Create procedure procName
    as 
      set nocount on  create table #temptable(
                   Id int identity(1,1) PRIMARY KEY not NULL,
                   v1 char(25),
                   v2 char(25),
                   v3 char(25)
      )  Insert #temptable(v1,v2,v3)
      Select v1,v2,v3 from T1    --1
      Union all --别忘了加 all
      Select v1,v2,v3 from T2    --2
      Union all
      Select v1,v2,v3 from T3    --3
       
      Select * from #temptable truncate table #temptable
     drop table #temptable
      

  6.   

    Exec procName  --执行
      

  7.   

    不好意思,关系弄反了,这次应该可以了……
    我前面发的你都无视好了
    Create view ViewDemo
    As
    Select ID row_index,v1,v2,v3 from T1    --1
    Union
    Select (T2.ID+T1.ID) row_index,v1,v2,v3 from T2,(Select max(ID) ID From T1) T1    --2
    Union
    Select (T3.ID+T2.ID+T1.ID) row_index,v1,v2,v3 from T3,(Select max(ID) ID From T2) T2,(Select max(ID) ID From T1) T1   --3PS:CSDN不能编辑,太讨厌了……
    再PS:靠,还不能连续回复三次……