tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
527
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    m3000 m3000 ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    99
    Hallo,

    ich möchte Feldinhalte gemeinsam zählen, egal ob sie in der DB gross oder klein geschrieben sind.

    Ausgangpunkt ist (immernoch) sowas wie:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
      select
              substr(col,1,2), count (*) "Anzahl"
              from table
              where
              substr(col,1,2) IN
               (
               'Aa',
           'AA',
               'Bb',
               'BB',
           )
              group by substr(col,1,2)
            ;
    Die Ausgabe sieht jetzt in etwa so aus:
    Code :
    1
    2
    3
    4
    5
    6
    
    SU   Anzahl
          --  ----------
          Aa       8
          AA      39452
          Bb     12
          BB     5664
    Ich hätte es gern summiert:
    Code :
    1
    2
    3
    4
    
    SU   Anzahl
           --  ----------
           AA     39460
           BB    5676
    Das kann (bevorzugt) in der Abfrage passieren oder durch Aufbereitung anschliessend. Ich habe mich schon an UPPER versucht, aber da wird nur die Ausgabe umformatiert, so dass das anschliessende group by keine Gemeinsamkeit erkennt.

    Dank und Gruss
    m3000
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Schau mal hier:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    SQL> select * from t;
     
    VALUE
    --------------------------------
    Aaa
    AaA
    aAa
    Bbb
    bbB
     
    (Temporäre Tabelle:)
     
    SQL> select * from u;
     
    VALUE
    --------------------------------
    AAA
    BBB
    CCC
     
    SQL> select u.value,count(t.value) Anzahl from u left outer join t on u.value = upper(substr(t.value,1,3)) group by u.value;
     
    VALUE                                ANZAHL
    -------------------------------- ----------
    AAA                                       3
    BBB                                       2
    CCC                                       0

    Gruß Tom
     

  3. #3
    m3000 m3000 ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    99
    Danke Tom,

    aber leider habe ich Deinen join-Vorschlag nicht in meine echte Umgebung übertragen können.
    Da ich diesen Bericht (voraussichtlich) nur einmal oder vielleicht jährlich zu erstellen brauche, schlage ich jetzt einen umständlichen und unperformanten Weg ein: Ich zähle erst in einer Abfrage die Aaa und die AAA, anschliessend summiere ich die Werte in der Anzahl-Spalte. Dann das ganze mit den Bbb, dann Ccc usw., insgesamt 18 Strings.

    Mich erstaunt, dass SQL so eine vermeintlich einfache Zeichenumwandlung nicht in der Abfrage beherrscht, aber sei's drum.

    Vielen Dank trotzdem und Gruss
    Marcus
     

Ähnliche Themen

  1. Gross- Kleinschreibung umdrehen in C++?
    Von DerSiebte im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 27.09.07, 12:25
  2. Antworten: 8
    Letzter Beitrag: 29.05.07, 02:52
  3. [OracleSQL] Zählung: Null-Treffer-Info
    Von m3000 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 29.03.05, 12:26
  4. Antworten: 5
    Letzter Beitrag: 15.11.04, 02:27
  5. Gross/Kleinschreibung
    Von tittli im Forum PHP
    Antworten: 17
    Letzter Beitrag: 15.10.04, 22:10