-

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: -

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 16:36

----------

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 13:37

----------

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 12:50

----------

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von juetho » Do, 03.01.2013 11:54

miamit hat geschrieben:Das Ergebnis ist dann nicht immer eine Ganzzahl, sondern am Beispiel

(6*0+5*0+4*0+3*1+2*1+1*1 ) / 21.0 = 0.28irgendwas

Statt dieser Dezimalzahl bliebt die Zelle leider leer.

Auch das ändern des Divisors von 21 auf 21.0 änderte nichts daran.
Ich kann den Fehler nicht nachvollziehen. Bei mir funktionieren folgende Varianten (Summe als Zwischenwert, damit der auch zu sehen ist.

Code: Alles auswählen

SELECT "ID",
        ( 2 * "A" + 3 * "B" ) AS "Summe", 
        ( 2 * "A" + 3 * "B" ) / 11 AS "IntDiv", 
        ( 2 * "A" + 3 * "B" ) / 11.0 AS "Div1", 
        CAST( ( 2 * "A" + 3 * "B" ) AS DECIMAL ) / 11.0 AS "Div2" 
FROM "Tabelle1" WHERE "A" IS NOT NULL
Die Variante mit CONVERT funktioniert bei mir überhaupt nicht und liefert eine äußerst merkwürdige Fehlermeldung.
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Die Variante mit CAST funktioniert nur dann, wenn auch der Divisor als Decimal erkannt wird. Die Variante mit Integer-Division enthält bei HSQL offensichtlich eine Rundung (meistens wird abgerundet).

Wenn in einem Fall eine "leere" Angabe kommt, kann das nur daran liegen, dass in einem Datensatz ein Feldinhalt NULL lautet (denn NULL, also "unbekannt", plus irgendetwas kann nur "unbekannt" liefern, also NULL).

Entweder du findest mit diesem Hinweis den Fehler; oder es bleibt dir nichts übrig als eine (anonymisierte und auf das Wesentliche reduzierte) Beispieldatei hochzuladen. Wegen der Differenzen zu Roberts Antwort gilt außerdem sein Hinweis:
RobertG hat geschrieben:dann möchte ich doch einmal wissen, mit welcher Office-Version und welcher Datenbank Du arbeitest.
Danach wird auch in Allgemeine Hinweise zur Forumsbenutzung ausdrücklich gefragt. (Warum kann diese Information nicht sofort geliefert werden :shock: ) Jürgen

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von RobertG » Do, 03.01.2013 11:40

Hallo Miamit,

wenn eine Änderung des Divisors auf '21.0' nichts änderte, dann möchte ich doch einmal wissen, mit welcher Office-Version und welcher Datenbank Du arbeitest. Ich erhalte bei der Eingabe von 6/21.0 unter LO 3.3.4 auf meinem Linux-System '0,3'; erweitere ich über den Divisor auf '21.00', so wird daraus '0,29'. Ich regele also die Nachkommastellen mit den Nachkommastellen des Divisors.
Zum Ändern mittels "Convert":
CONVERT("A",DECIMAL(4,2))
gibt Dir den Inhalt von "A" mit insgesamt 4 Stellen zurück, davon 2 Dezimalstellen.

Gruß

Robert

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 09:09

----------

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 09:04

----------

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von RobertG » Do, 03.01.2013 09:03

Hallo Miamit,

Du hast in dem ersten Posting geschrieben, dass Du z.B. 1,8 als Ergebnis einer Abfrage erhältst. Das müsste ja schon eine Zahl mit Nachkommastellen sein. Die kannst Du aber nicht erhalten, wenn Du Integer-Zahlen mit Ganzzahlen multiplizierst und diese dann addierst. Das bleiben dann Ganzzahlen.
Vor diesem Hintergrund müsstest Du wohl das erste Posting korrigieren. Denn dort behauptest Du, wenn 1,8 durch 2 geteilt würde, dann würde als Ergebnis '0' ausgeworfen. Das ist aber nicht Dein Problem gewesen, kann eigentlich auch nicht sein, da 1,8 ja eine Dezimalzahl ist und das Ergebnis dann auch eine Dezimalzahl sein wird - ergibt nämlich bei mir in jeder Abfrage 0,9.
Dein eigentliches Problem wird so etwas wie 3 geteilt durch 4 sein. Dann erst machen alle anderen Postings hier einen Sinn, die sagen: das hat etwas mit dem Format "Integer" bzw. "Dezimal" zu tun.

Gruß

Robert

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 08:43

----------

-

von Benutzer 48566 gelöscht » Do, 03.01.2013 08:42

----------

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von RobertG » Mi, 02.01.2013 19:33

Hallo Miamit,
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Index", ( 6 * "A" + 5 * "B" + 4 * "C" + 3 * "D" + 2 * "E" + 1 * "F" ) / 21  AS "Ergebnis" FROM "Liste" WHERE "Filter" = 'Z'
Die Spalten A B C D E und F sind als Integer angelegt worden, da die Werte, die diese Spalten beinhalten, nur ganzzahlig sein können.
Kannst Du mir dann erklären, wie in Deinem ersten Posting aus einer Multiplikation und Addition von Ganzzahlen Zahlen mit Nachkommastellen, also Dezimalzahlen, entstehen? (10,5 | 1,8 | 12,4)
Denn wenn ich tatsächlich in einem Teil der Rechnung eine Dezimalzahl habe, dann klappt auch die Division.

Gruß

Robert

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von juetho » Mi, 02.01.2013 19:06

Du musst dafür sorgen, dass mindestens eine der beteiligten Zahlen als Dezimalzahl verstanden und ausgewertet wird. Dafür gibt es die Funktionen CAST und CONVERT; am einfachsten ist es aber, den Divisor als 21.0 anzugeben.

Zum Runden gibt es verschiedene Funktionen - abhängig vom Datenbanksystem (auch das verschweigst du). Bei HSQL stehen sie im Base-Handbuch auf Seite 271, bei MySQL hier.

Jürgen

-

von Benutzer 48566 gelöscht » Mi, 02.01.2013 18:38

----------

Re: Abfrage-Fehler: Keine Ausgabe, wenn Ergebnis < 1

von lorbass » Mi, 02.01.2013 18:13

miamit hat geschrieben:Interger Diskussion. Gut zu wissen.
Division, nicht Diskussion :roll:

Gruß
lorbass

-

von Benutzer 48566 gelöscht » Mi, 02.01.2013 17:50

----------

Nach oben