-5

簡単なクエリがあります:

select key, name from cities

それは私にそのような価値を与えます:

11 | Chicago
21 | New York
31 | Boston

私ができる必要があるのは、最後にこの結果を受け取るために、SQLまたはJavaのいずれかで可能なすべての組み合わせのハッシュを作成することです。

11 | Chicago
21 | New York
31 | Boston
32 | Chicago/New York
42 | Chicago/Boston
52 | New York/Boston
63 | Chicago/New York/Boston

何か案は?

4

1 に答える 1

0

これは完璧ではありませんが、出発点になる可能性があります。

最初に関数を作成しました:

create or replace function sum_string(str in varchar2) return number is
  Result number;
begin
  execute immediate 'select ' || str || ' from dual'
    into result;
  return(Result);
end sum_string;
/

次にクエリが来ます(your_tableあなたのテーブルです)

with jwt as  (
  select t1.key k1, t1.name n1, t2.key k2, t2.name n2, t1.key + t2.key jkey
    from your_table t1
    left outer join (select key, name
                       from your_table
                     union all
                     select 0 "key", null "name" from dual) t2 on t1.key <>
                                                                  t2.key
  )
select jkey, max(aaa.pth)
  from (select sys_connect_by_path(t.n1, '/') pth,
               sum_string(ltrim(sys_connect_by_path(t.k1, '+'), '+')) jkey
          from jwt t
         start with t.k2 = 0
        connect by nocycle prior k1 = k2) aaa
 group by jkey;
于 2012-06-03T12:11:37.743 に答える