日期:2014-05-17  浏览次数:21070 次

请教一条SQL语句,两个表联合查询的
数据表结构:
表A
ID   
1
2
3

表B
ID    name
1       张三
2        李四
2        张三
3       王五
3       李四

期望的查询结果是
ID    NAME
1       张三
2       李四||张三
3      王五||李四

联合条件是ID相等。
------解决方案--------------------
引用:
数据表结构:
表A
ID   
1
2
3

表B
ID    name
1       张三
2        李四
2        张三
3       王五
3       李四

期望的查询结果是
ID    NAME
1       张三
2       李四
------解决方案--------------------
张三
3      王五
------解决方案--------------------
李四

联合条件是ID相等。


WITH TT AS
 (SELECT 1 ID
    FROM DUAL
  UNION ALL
  SELECT 2 ID
    FROM DUAL
  UNION ALL
  SELECT 3 ID
    FROM DUAL
  UNION ALL
  SELECT 4 ID
    FROM DUAL),
T AS
 (SELECT 1 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 2 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 2 ID, 'LS' NM
    FROM DUAL
  UNION ALL
  SELECT 3 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 3 ID, 'WW' NM
    FROM DUAL)
SELECT TT.ID, T3.NM
  FROM TT,
       (SELECT T2.ID, ltrim(max(SYS_CONNECT_BY_PATH(t2.NM, '
------解决方案--------------------
')), '
------解决方案--------------------
') NM
          FROM (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) RN
                  FROM T) T2
        connect by prior rn = rn - 1
               and prior t2.id = t2.id
         GROUP BY T2.ID) T3
 WHERE TT.ID = T3.ID(+);

------解决方案--------------------
引用:
数据表结构:
表A
ID   
1
2
3