ORACLE - Wählen Sie Count on a Subquery
Ich habe eine Oracle-Tabelle, die eine Reihe von Bereichen (RangeA und RangeB) enthält. Diese Spalten sind varchar, da sie sowohl numerische als auch alphanumerische Werte enthalten können, wie im folgenden Beispiel dargestellt:
ID|RangeA|RangeB
1 | 10 | 20
2 | 21 | 30
3 | AB50 | AB70
4 | AB80 | AB90
Ich muss eine Abfrage ausführen, die nur die Datensätze mit numerischen Werten zurückgibt, und eine Zählung für diese Abfrage durchführen. Bisher habe ich versucht, dies mit zwei verschiedenen Abfragen ohne Glück zu tun:
Abfrage 1:
SELECT COUNT(*) FROM (
SELECT RangeA, RangeB FROM table R
WHERE upper(R.RangeA) = lower(R.RangeA)
) A
WHERE TO_NUMBER(A.RangeA) <= 10
Abfrage 2:
WITH A(RangeA,RangeB) AS(
SELECT RangeA, RangeB FROM table
WHERE upper(RangeA) = lower(RangeA)
)
SELECT COUNT(*) FROM A WHERE TO_NUMBER(A.RangeA) <= 10
Die Unterabfrage funktioniert einwandfrei, da ich die beiden Datensätze erhalte, die nur numerische Werte enthalten, der COUNT-Teil der Abfrage jedoch fehlschlägt. Ich sollte nur 1 auf der Zählung erhalten, aber stattdessen erhalte ich den folgenden Fehler:
ORA-01722: invalid number
01722. 00000 - "invalid number"
Was mache ich falsch? Jede Hilfe wird sehr geschätzt.