Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Zwei Datenfelder dividieren? (SQL)
zurück: Verknüpfte ODBC-Tabelle nimmt keine leeren Felder an weiter: wie kann ich "#Fehler" aus dem feld rauslöschen? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
marcos
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Feb 2005, 09:51
Rufname:

Zwei Datenfelder dividieren? (SQL) - Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Hallo.

Mir liegt eine Tabelle in folgender Form vor:

_____________
|Gruppe| Wert |
______________
|___1__|__50__|
|___1__|_100__|
|___2__|__15__|
|___2__|__75__|
|__...__|__... __|


Als Aufgabe wurde mir gestellt, jeweils die beiden Einträge von "Wert" (nach Gruppenzugehörigkeit) zu dividieren und in einer neuen Tabelle auszugeben.
Jede Gruppe hat nie mehr als zwei Einträge. Nehmen wir an, dass der 'letzte' Eintrag einer Gruppe immer der Divisor ist.

Beispiel der Ausgabe (auf obere Tabelle bezogen):

________________
|Gruppe| Quotient |
________________
|___1__|__0.5___|
|___2__|__0.2___|
|__...._ |___...___|


Ist dies so ohne weiteres mit SQL möglich?
Die Summe zu ermitteln wäre einfach, dazu bräuchte ich nur "SUM" und "GROUPBY". Aber das nützt mir leider nichts.

Würden separate Spalten für "Divident" und "Divisor" existieren wäre es einfacher, da ich diese direkt pro Datensatz habe. In meinem konkreten fall aber muss ich die Werte aus zwei Datensätzen ermitteln. :-/
Ein Umschreiben der Tabellenstruktur kommt eigentlich nicht in Frage, da dies zu viel Zeit in Anspruch nehmen würde.

Mit VBA habe ich mich bisher noch nicht genug beschäftig. Ist es damit vielleich einfacher umzusetzten, z.B. Ein entsprechendes Array aus den Datensätzen zu erstellen und damit weiterzurechnen?


Ich bin für jede Hilfe dankbar.

Danke im Voraus
Marcos
lothi
c#, .Net


Verfasst am:
03. Feb 2005, 13:33
Rufname:
Wohnort: Birgisch


AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Hallo

Wie kann man denn festtellen was der 'Letzte DS' um diesen als Divisor zu nehmen? Oder ist der immer grösser als der 1.?

Es soll immer der 1. DS durch den 2. DS geteilt werden?

Hier ein Beispiel:
Code:
SELECT Id,
            Min(Zahl) AS MinvonZahl,
            Min([Zahl])/(SELECT Max([Zahl]) FROM Tabelle8) AS Antwort
FROM Tabelle8
GROUP BY Id;

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Gast



Verfasst am:
03. Feb 2005, 13:46
Rufname:

AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

lothi hat folgendes geschrieben:
Wie kann man denn festtellen was der 'Letzte DS' um diesen als Divisor zu nehmen? Oder ist der immer grösser als der 1.?

Ich wollte es evt. mit einem neuen Attribut markieren. Hinzu kommt z.B. eine dritte Spalte "Divisor" (Wahrheitswert) in Spiel. Für spätere Abfragen könnte ich festlegen, dass der Datensatz einer Gruppe ein Divisor ist, wenn "Divisor" TRUE ist.
Beispiel:

_____________________
|Gruppe| Wert | Divisor |
_____________________
|___1__|__50__| false__|
|___1__|_100__| true___|
|___2__|__15__| false__|
|___2__|__75__| true__|
|__...__|__... __| _...___|

Ich weiss eben blos nicht, wie ich das auswerten soll. Jede Gruppe hat maximal zwei Datensätze. Also Gruppe "1" darf z.B. nicht aus drei Werten bestehen.
lothi hat folgendes geschrieben:
Es soll immer der 1. DS durch den 2. DS geteilt werden?

Das wäre schonmal ein Anfang. Nun kann es aber sein, dass man die zwei Datensätze der Gruppe vertausch, also in falscher Reihenfolge eingibt. Eigentlich soll dann mit dem Wahrheitsfeld definiert werden, ob ein Wert Divisor oder Divident ist.

Ist natürlich nur eine Vorüberlegung von mir. Bei dieser Umsetzung wüsste ich aber wie gesagt nicht, wie sich die entsprechende SQL-Abfrage zusammensetzt.

Marcos
lothi
c#, .Net


Verfasst am:
03. Feb 2005, 17:15
Rufname:
Wohnort: Birgisch

AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Dann ich da noch ein Abfragebeispiel zur Auswahl.

Zum Beispiel oben:

Diese Abfrage Teilt immer den kleinsten Wert mit dem grössten Wert mit
der gleichen ID-Nummer. Egal wieviel die gleiche ID haben.

Zu diesem Beispiel:

Code:

SELECT Tabelle8.Id,
       Tabelle8.Zahl,
       Tabelle8.Div,
       [Zahl]/(SELECT A.[Zahl] 
                  FROM Tabelle8 As A
                  WHERE Div = 0
                  AND A.Id=Tabelle8.Id
                  Order By A.Id DESC ) AS B
FROM Tabelle8
WHERE Tabelle8.Div=0
ORDER BY Tabelle8.Id;


Diese Variante Arbeitet mit einem JA/NEIN Feld hier genannt Div.
In der ersten Abfrage werden alle Felder mit NEIN ausgewählt. Die Unterabfrage wählt die Daten JA aus die die gleiche ID wie der DS in der ersten Abfrage. Mit dieser Zahl wird dann der Wert aus der ersten Abfrage
geteilt.
Mit dieser Variante darf nur 1 Divisor pro ID sein es durfen aber mehrer Zahlen sein pro ID.
Diese werden dann alle mit dem gleichen Divisor geteilt.
Alles verstanden?

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
marcos
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Feb 2005, 22:16
Rufname:


AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Hallo lothi.


Erstmal Danke für deine Bemühungen! So richtig scheint es aber nicht zu funktionieren. Ich habe es mit deinem SQL-Code getestet.

Tabelle8:
ID_Zahl_Div

1__ 50__ [ ]
1__100_ [x]
2__ 15__[ ]
2__75__[x]


Abfrage8
ID_Zahl_Div_B

1__50__[ ]__1
2__15__[ ]__1


so wie ich es benötige
ID_Quotient

1____0,5
2____0,2


Mit verschachtelten Abfragen habe ich mich noch nicht auseinandersetzten können Sad ... wüsste also auch nicht, wie ich deine BeispielAnweisung anpassen könnte.


Gruß Marcos
lothi
c#, .Net


Verfasst am:
04. Feb 2005, 08:58
Rufname:
Wohnort: Birgisch

AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Hallo

Wenn du mir sagst wie die Tabelle heisst und die Felder kann ich dir das anpassen.
Am besten postest du hier den SQL von der Normalen Abfrage.

Also bei mir funktionierts wunderbar. Ich bekomme genau das Resultat das du
haben möchtest.

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
marcos
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Feb 2005, 09:23
Rufname:

AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Habe eben nochmal eine frische Datenbank erstellt mit "Tabelle8" und deiner Abfrage und wieder das gleiche Ergebnis.

Abfrage8
ID_Zahl_Div_B

1__50__[ ]__1
2__15__[ ]__1


Ich benutze "Microsoft Access 2002 SP3". Liegt es evt. an meiner Version? Könnte ich mir allerdings nicht vorstellen, da sich grundlegende Dinge in SQL nicht ändern sollten.

Ich könnte dir die Datenbank via eMail zuschicken, wenn du willst. Wenn du dann die Abfrage startest und etwas anderes as die obere Tabelle herauskommt, dann scheint es wohl wirklich an meiner Access Version zu liegen. Vielleicht aber übersehe ich auch etwas wichtiges bei der Erstellung.



MarcoS
lothi
c#, .Net


Verfasst am:
04. Feb 2005, 12:06
Rufname:
Wohnort: Birgisch

AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Hallo

An der Accessversion kann es nicht liegen.

Es liegt an mir war nicht fähig den SQL hier richtig zu Posten:
Code:
SELECT Tabelle8.Id,
       Tabelle8.Zahl,
       Tabelle8.Div,
       [Zahl]/(SELECT A.[Zahl] 
                  FROM Tabelle8 As A
                  WHERE Div = -1
                  AND A.Id=Tabelle8.Id
                  Order By A.Id DESC ) AS B
FROM Tabelle8
WHERE Tabelle8.Div=0
ORDER BY Tabelle8.Id;

Kann sein das ich wieder verkehrt bin, dann wechsle einfach die Kriterien bei Div aus.

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
marcos
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Feb 2005, 12:13
Rufname:


AW: Zwei Datenfelder dividieren? (SQL) - AW: Zwei Datenfelder dividieren? (SQL)

Nach oben
       

Es funktioniert. Surprised

Danke für deine Hilfe!

Marcos
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle per SQL umbennen (Access 2000) 2 DerPater 1084 09. Dez 2004, 14:02
Gast Tabelle per SQL umbennen (Access 2000)
Keine neuen Beiträge Access Tabellen & Abfragen: Access SQL auskommentieren 2 excalibur 7156 21. Nov 2004, 20:24
excalibur1 Access SQL auskommentieren
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Wenn-Dann-Sonst in SQL??? 2 SCHNEEMANN 998 18. Okt 2004, 17:26
Willi Wipp Wenn-Dann-Sonst in SQL???
Keine neuen Beiträge Access Tabellen & Abfragen: Wenn SQL Abfrage keine Werte gefunden hat, dann... 6 Danny G. 1787 30. Sep 2004, 18:19
Willi Wipp Wenn SQL Abfrage keine Werte gefunden hat, dann...
Keine neuen Beiträge Access Tabellen & Abfragen: SQL - Abfrage ob ein Wert in der Tabelle enthalten ist 1 notausgang 1301 23. Sep 2004, 09:42
stpimi SQL - Abfrage ob ein Wert in der Tabelle enthalten ist
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...) 2 SMArmageddon 2417 01. Sep 2004, 15:07
SMArmageddon Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...)
Keine neuen Beiträge Access Tabellen & Abfragen: Verschachtelte SQL Abfragen in ACCESS 2000? 1 Gast 1782 17. Jul 2004, 22:34
faßnacht(IT); Verschachtelte SQL Abfragen in ACCESS 2000?
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Unterabfragen Not In, Not Exists 2 Winni 38088 13. Jul 2004, 13:23
Winni SQL Unterabfragen Not In, Not Exists
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Kunden_IDs 2 JTR 472 07. Jul 2004, 14:13
JTR Zwei Kunden_IDs
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfrage 2 tocotronicx 975 25. Jun 2004, 15:32
Gast SQL Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: per SQL einen Wert aus einem bestimmten recordset lesen/spei 4 JTR 1379 02. Jun 2004, 11:38
Gast per SQL einen Wert aus einem bestimmten recordset lesen/spei
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen zusammenfügen und Nullwerte überschreiben 1 m.hataj 1304 13. Mai 2004, 18:10
faßnacht(IT); Zwei Tabellen zusammenfügen und Nullwerte überschreiben
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum