[Oracle 10g] group by string bis bestimmten Wert

m3000

Erfahrenes Mitglied
Hallo,

ich möchte eine Zeichenkette gruppiert zählen, die immer am Feldanfang bis zum ersten Gleichheitszeichen steht. Dieses Gleichheitszeichen ist aber auf keine festen Position. Wie kann ich das erreichen? Irgendwie mit INSTR?
Als groben Entwurf hier das statement, wenn das Gleichheitszeichen immer auf Pos. 5 wäre:

Code:
select substr(foo,1,4), count (*) 
from tab1
group by substr(foo,1,4);
Dank und Gruss
m3000
 
Genau, INSTR().

Mein Beispiel gibt 'foo' zurück. Das kannst du auch ins GROUP BY einfügen.
SQL:
SELECT SUBSTR('foo=bar', 1, INSTR('foo=bar', '=') -1 ) FROM DUAL;

Besser machst du aber ein Subselect, damit das nur einmal ausgeführt wird

SQL:
SELECT myfield, count(*)
FROM (
		SELECT SUBSTR('foo=bar', 1, INSTR('foo=bar', '=') -1 ) AS myfield 
		FROM tab1
	) sub
GROUP BY myfield;
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück