Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PL/SQL Abfrage-Problem

Empfohlene Antworten

Hallo, ich beschäftige mich schon seit längerem mit PL/SQL, komme aber nicht auf die LÖsung folgender Problemstellung:

Ich habe eine Tabelle mit folgenden Daten:

Kunde A, gekaufter Artikel x, Preis 1

Kunde A, gekaufter Artikel Y, Preis 2

Kunde B, gekaufter Artikel Z, Preis 3

.....

Jetzt würde ich gerne eine Abfrage so gestalten, dass pro Kunde der gesamte Umsatz ausgegeben wird. Das Ergebnis sollte dann in etwa so aussehen:

Kunde A hat einen Umsatz von xxx Euro

Kunde B hat einen Umsatz von xxx Euro

.....

Die Abfrage für einen einzelnen Kunden ist kein Problem, aber ich schaffe es einfach nicht für alle Kunden gleichzeitig......

Wer hat einen Tip?

Vielen Dank, genau das wars! Ich hab einfach zu kompliziert gedacht......:upps

also so ganz krieg ich das immer noch nicht hin! Mit folgendem Ausdruck klappt des ganze einfach nicht. Mein SQL-Developper meint dann: Komponente 'Preis' muss deklariert werden.


create or replace

PROCEDURE KLAUSUR_1B 


AS


Cursor kunde_cursor IS

  SELECT k.vorname, sum(l.preis)

  FROM (kunde k inner join download d on k.kundennummer =d.kundennummer)

    inner join lied l on d.liednummer = l.liednummer

    GROUP BY k.vorname;


BEGIN


For kunde_record IN kunde_cursor LOOP

  dbms_output.put_line('Name: '||kunde_record.vorname||' Umsatz: '||kunde_record.preis);

  END LOOP;


END;

Wo liegt der Fehler???

Vielen DAnk schon mal!!!

Wo liegt der Fehler???

Die Spalte heißt nicht mehr Preis, sondern sum(l.preis) (siehst Du auch, wenn Du das SQL einfach mal so ausführst). Um das zu ändern, vergibst Du einfach einen Spaltenalias:

SELECT k.vorname, sum(l.preis) [b]AS preis[/b]

Dim

Vielen vielen Dank, das hat geholfen!

Nur noch eine Frage: Wenn ich jetzt in der SELECT-Anweisung zusätzlich den Nachnamen abfrage also

SELECT [B]k.nachname[/B], k.vorname, sum(l.preis) as preis

kommt die Fehlermeldung "Kein Group-BY Ausdruck". Wie kann ich das lösen?

ahh, ok - ist ja auch irgendwo logisch ;)

Danke!!!

Um genau Dein Beispiel aufzugreifen finde ich, solltest Du ein group by kundennummer machen. Vornamen sind öfters identisch und auch Nachnamen reichen nicht zweifelsfrei.

Für die Funktionsweise ist das egal, nur die Ergebnismenge kann sich u.U. ändern :D

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.