Announcement

Collapse
No announcement yet.

Proleme mit self-joins und group by

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Proleme mit self-joins und group by

    Hi Folks,

    ich habe eine irrsinig lange Tabelle, die zu jedem Kunden(id) eine deutsche(de), englische(en) und französische(fr) Supportrufnummer jeweils als Festnetzrufnummer(type=0) und als Servicerufnummer(type=1) enthält, die wie folgt aufgebaut ist:

    id | phone | locale | type
    ----+-----------------------+--------+------
    45 | 004922188765288 | de | 0
    45 | 004922188765756 | en | 0
    45 | 004922188765871 | fr | 0
    45 | 01805354669 | de | 1
    45 | 01805354651 | en | 1
    45 | 01805354432 | fr | 1
    70 | 004922188765004 | de | 0
    70 | 004922188765204 | en | 0
    70 | 004922188765304 | fr | 0
    70 | 01805665432 | de | 1
    70 | 01805665433 | en | 1
    70 | 01805665434 | fr | 1

    Nun möchte ich eine Abfrage schreiben, die mir pro Zeile eine 'id' mit folgenden Informationen ausgibt:

    id;phone_0_de;phone_0_en;phone_0_fr;phone_1_de;pho ne_1_en;phone_1_fr
    45;004922188765288;004922188765756;004922188765871 ;01805354669;01805354651;01805354432
    70 etc.

    Wer kann mir hierbei helfen? Meine Self-Join und group by Ansätze führten jeweils nicht zum Ziel.

    Der-Niko

  • #2
    ..und nun die Tabellen mal sauber formatiert

    Der-Niko

    id | phone | locale | type<br>
    ----+-----------------------+--------+------<br>
    45 | 004922188765288 | de | 0<br>
    45 | 004922188765756 | en | 0<br>
    45 | 004922188765871 | fr | 0<br>
    45 | 01805354669 | de | 1<br>
    45 | 01805354651 | en | 1<br>
    45 | 01805354432 | fr | 1<br>
    70 | 004922188765004 | de | 0<br>
    70 | 004922188765204 | en | 0<br>
    70 | 004922188765304 | fr | 0<br>
    70 | 01805665432 | de | 1<br>
    70 | 01805665433 | en | 1<br>
    70 | 01805665434 | fr | 1<br>

    Nun möchte ich eine Abfrage schreiben, die mir pro Zeile eine 'id' mit folgenden Informationen ausgibt:

    id;phone_0_de;phone_0_en;phone_0_fr;phone_1_de;pho ne_1_en;phone_1_fr<br>
    45;004922188765288;004922188765756;004922188765871 ;01805354669;01805354651;01805354432<br>
    70 etc.<br>

    Wer kann mir hierbei helfen?

    Der-Nik

    Comment


    • #3
      create table temp (A varchar2(32), B varchar2(32), C varchar2(32), D varchar2(32));

      insert into temp values ('45','004922188765288','de','0');
      insert into temp values('45','004922188765756','en','0');
      insert into temp values('45','004922188765871','fr','0');
      insert into temp values('45','01805354669','de','1');
      insert into temp values('45','01805354651','en','1');
      insert into temp values('45','01805354432','fr','1');
      insert into temp values('70','004922188765004','de','0');
      insert into temp values('70','004922188765204','en','0');
      insert into temp values('70','004922188765304','fr','0');
      insert into temp values('70','01805665432','de','1');
      insert into temp values('70','01805665433','en','1');
      insert into temp values('70','01805665434','fr','1');
      commit;

      select distinct A.A ID
      , (select distinct B from temp B where B.A = A.A and B.C = 'de' and D = '0') phone_0_de
      , (select distinct B from temp B where B.A = A.A and B.C = 'en' and D = '0') phone_0_en
      , (select distinct B from temp B where B.A = A.A and B.C = 'fr' and D = '0') phone_0_fr
      , (select distinct B from temp B where B.A = A.A and B.C = 'de' and D = '1') phone_1_de
      , (select distinct B from temp B where B.A = A.A and B.C = 'en' and D = '1') phone_1_en
      , (select distinct B from temp B where B.A = A.A and B.C = 'fr' and D = '1') phone_1_fr
      from temp A

      Comment

      Working...
      X