有2列, Group_id 和 Memberselect Group_id from tablewhere Member = A 且 Member = B 且 Member = C
总的来说,我希望把 存在A、B、C 这3 个元素的 group_id 查找出来。 也就是把22 找出来。具体的sql 该怎么写

解决方案 »

  1.   

    SELECT group_id
    FROM
    (
      SELECT group_id,MAX(susbstr(sys_connect_by_path(MEMBER,','),2)) join_member
      FROM
      (
        SELECT group_id,MEMBER,
        row_number()over(PARTITION BY group_id
        ORDER BY group_id) rn
        FROM tab
      )
      START WITH rn=1 
      CONNECT BY rn-1 = PRIOR rn AND group_id=PRIOR group_id

    WHERE join_member='A,B,C'
      

  2.   


    SELECT group_id
    FROM
    (
      SELECT group_id,MAX(substr(sys_connect_by_path(MEMBER,','),2)) join_member
      FROM
      (
        SELECT group_id,MEMBER,row_number()over(PARTITION BY group_id ORDER BY group_id) rn
        FROM test
      ) GROUP BY group_id
      START WITH rn=1 
      CONNECT BY rn-1 = PRIOR rn AND group_id=PRIOR group_id

    WHERE join_member='B,C,A'  --顺序调过来就没结果了
    --join_member='A,B,C'      有结果且正确