![]() |
Datenbank: oracle • Version: 10 • Zugriff über: egal
wo nichts ist kann man nichts zählen?
Hallo zusammen,
Ich habe eine einfache Abfrage, die das vorkommen verschiedener Datensätze zählt:
Code:
das Ergebnis:
select count(cases.casekey) cnt,substr(v_mk.busunit,1,1) bu
from .. group by substr(v_mk.busunit,1,1)
Code:
Jetzt benötige ich noch eine weitere Ergebniszeile für sonstige Werte
CNT B
---------- - 10 W 14 K 14 A
Code:
Diese Zeile soll immer vorhanden sein, mit 0 wenn es keine sonstigen Werte gibt,
0 Sonstiges
oder aber mit der richtigen Zählung. (das hab ich) mit NVL hab ich noch kein Glück gehabt. Könnt Ihr mir da weiter helfen? Gruß K-H |
AW: wo nichts ist kann man nichts zählen?
Du könntest es mit einem billigen Union versuchen
Code:
select count(cases.casekey) cnt,cast(substr(v_mk.busunit,1,1) as varchar(9)) bu
from .. where not theSonstigeBeinhaltn group by substr(v_mk.busunit,1,1) union select count(cases.sonstige),'Sonstige' from ... where Sonstige Beinhaltn |
AW: wo nichts ist kann man nichts zählen?
Du könntest ein Select, mit Subselect dranhängen?
Zitat:
Delphi-Quellcode:
.
(select count(1) from ...)
dann gab's doch irgendeinen Befehl "nimm AAA und wenn AAA = NULL/Nix, dann nimm BBB" und BBB ist halt 0. [edit] Git denn
Delphi-Quellcode:
immer einen Datensatz zurück?
SELECT count(...)
|
AW: wo nichts ist kann man nichts zählen?
Hallo!
Wenn du in der Tabelle/View NULL werte hast, werden diese beim Count angezeigt. Möchtest du aber statt der "Leerzeile" "Sonstiges" schreiben, dann verwende NVL. Die Frage ist ob du das so willst oder wie Furtbichler oder himitsu es beschrieben haben...
Code:
select count(1) cnt, nvl(substr(v_mk.busunit,1,1), 'Sonstiges') bu
from .. group by substr(v_mk.busunit,1,1) |
AW: wo nichts ist kann man nichts zählen?
Das FROM und das WHERE wären noch interessant, Du verknüpfst ja 2 Tabellen. Da könnte man dann ein CASE einbauen, wenn ich das richtig verstanden habe, das im NULL-Fall eben "Sonstiges" ausgibt.
|
AW: wo nichts ist kann man nichts zählen?
Vielen dank für die Anregungen, jetzt klappts.
Für die die es interessiert: (ist nicht schön, aber die Zeit drängt)
Code:
Es gibt eine Abfrage die zählt (A,K,W,Sonst),
select a_c
,k_c ,w_c ,nvl(misc_c,0) misc_c from ( select 1 key,nvl(cnt,0) a_c from ( select count(cases.casekey) cnt,substr(v_mk.busunit,1,1) bu .....) cnt where cnt.bu='A') full outer join (select 1 key, nvl(cnt,0) k_c from ( select count(cases.casekey) cnt,substr(v_mk.busunit,1,1) bu ........) cnt where cnt.bu='K') on 1=1 full outer join (select 1 key, nvl(cnt,0) w_c from ( select count(cases.casekey) cnt,substr(v_mk.busunit,1,1) bu ...) cnt where cnt.bu='W') on 1=1 full outer join (select 1 key, cnt misc_c from ( select count(cases.casekey) cnt,substr(v_mk.busunit,1,1) bu ....) cnt where (cnt.bu<>'A' and cnt.bu<>'K' and cnt.bu<>'W') or cnt.bu is null ) on 1=1 deren Ergebnis wird aufgeteilt und in 4 Feldern zurück gegeben. (ist für das ausfüllen eines Formulars notwendig) auch wenn es jetzt funktioniert, vielleicht hat der eine oder andere noch einen Verbesserungsvorschlag. Vielen Dank nochmal. Gruß K-H P.s. @Himitsu ich denke Du meinst decode(wert,null,0,eins,1,..,rest) |
AW: wo nichts ist kann man nichts zählen?
Vielleicht ungefähr so (ungetestet):
SQL-Code:
SELECT
COUNT(cases.casekey), (CASE v_mk.FK --hier Verknüpfungsfeld eintragen WHEN NULL THEN 'Sonstiges' ELSE SUBSTR(v_mk.busunit,1,1) END) FROM cases LEFT JOIN v_mk ON v.mk.FK = cases.PK --hier verknüpfte Felder eintragen AND SUBSTR(v_mk.busunit,1,1) IN ('A', 'K', 'W') GROUP BY v_mk.busunit |
AW: wo nichts ist kann man nichts zählen?
CASE:
Ich glaub in Oracle gibt es davür das NVL. (siehe in Einigen der anderen Antworten) ![]() Aber was liefert denn SUBSTR zurück, wenn der "String" NULL ist? |
AW: wo nichts ist kann man nichts zählen?
NVL ist so etwas wie IFNULL, nicht mit
![]() |
AW: wo nichts ist kann man nichts zählen?
SQL-Code:
liefert mir einen Leerstring.
SELECT SUBSTR(NULL, 1, 1) FROM dual
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz