请问,通过
with TB1 as
(
),
TB2 AS 
()
....
获得几个表,在这个表中有2个相同的字段:姓名,类型,
现在我想将这几个表合在一起,条件是这两个字段相同的合为一条.

解决方案 »

  1.   

    with TB1 as
    (
    ),
    TB2 AS  
    ()
    ....
    SELECT *
    FROM TB1 A
      JOIN TB2 B
        ON A.姓名=B.姓名 AND A.类型=B.类型
      JOIN TB3 C
        ON A.姓名=C.姓名 AND A.类型=C.类型
     ......
      

  2.   

    select * from a,b where a.id=b.id and a.type=b.type
    --就可以了,为什么要用with表达式?
      

  3.   

    select * from tb1 a join tb 2 b on a.姓名=b.姓名 and a.类型=b.类型
      

  4.   

    select * from a,b where a.id=b.id and a.type=b.type
      

  5.   


    with TB1 as
    (
    ),
    TB2 AS  
    ()
    ....
    SELECT *
    FROM TB1 A
      JOIN TB2 B   --or   FULL JOIN
        ON A.姓名=B.姓名 AND A.类型=B.类型
      JOIN TB3 C
        ON A.姓名=C.姓名 AND A.类型=C.类型
     ......
      

  6.   

    with TB1 as
    (
    ),
    TB2 AS  
    ()
    ....
    SELECT *
    FROM TB1 A
      JOIN TB2 B
        ON A.姓名=B.姓名 AND A.类型=B.类型 ......
      

  7.   

    --呵呵,看你要怎么合了
    --#1.第一种合法
    ;WITH tb1 AS
    (
    SELECT 姓名 = 'a', 类型 = 'type1' UNION ALL
    SELECT 姓名 = 'b', 类型 = 'type2'
    ),
    tb2 AS
    (
    SELECT 姓名 = 'a', 类型 = 'type1'
    )
    SELECT *
    FROM tb1 a
    FULL JOIN tb2 b
    ON a.姓名 = b.姓名 AND a.类型 = b.类型
    --#2.第二种合法
    SELECT
    姓名 = COALESCE(a.姓名, b.姓名),
    类型 = COALESCE(a.类型, b.类型)
    FROM tb1 a
    FULL JOIN tb2 b
    ON a.姓名 = b.姓名 AND a.类型 = b.类型
      

  8.   

    ;WITH tb1 AS
    (
        SELECT 姓名 = 'a', 类型 = 'type1' UNION ALL
        SELECT 姓名 = 'b', 类型 = 'type2'
    ),
    tb2 AS
    (
        SELECT 姓名 = 'a', 类型 = 'type1'
    )
    SELECT *
    FROM tb1 a
        FULL JOIN tb2 b
            ON a.姓名 = b.姓名 AND a.类型 = b.类型