Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst SQL max wert in WHERE Bedingung

Mitglied: StarMann

StarMann (Level 1) - Jetzt verbinden

02.07.2017 um 22:01 Uhr, 8093 Aufrufe, 7 Kommentare

Hi,

ich möchte alle Daten Sätze aus dem größten Jahr,
Wie bekomme ich den wert in die WHERE Bedingung?
01.
SELECT 
02.
    we.NAME,
03.
    un.BILANZSUMME,
04.
    un.JAHR
05.
from UNTERNEHMENSDATEN 
06.
    join WERTPAPIER we
07.
    on un.WKN = we.WKN
08.
WHERE un.JAHR = select max(jahr) from UNTERNEHMENSDATEN
09.
order by  un.BILANZSUMME DESC;
Mitglied: em-pie
02.07.2017 um 22:22 Uhr
Moin,

versuche es mal anstelle der WHERE Clause mit der HAVING-Syntax

Die greift immer dann, wenn du ein Group by implementiert hast und auf dessen Ergbnis filtern möchtest

Gruß
em-pie
Bitte warten ..
Mitglied: StarMann
02.07.2017 um 22:30 Uhr
also so?
01.
SELECT  
02.
we.NAME, 
03.
un.BILANZSUMME, 
04.
un.JAHR 
05.
from UNTERNEHMENSDATEN
06.
    join WERTPAPIER we 
07.
    on un.WKN = we.WKN 
08.
GROUP BY un.JAHR
09.
HAVING max(un.JAHR)
10.
order by  un.BILANZSUMME DESC;
Fehler
ORA-00920: Ungültiger relationaler Operator
00920. 00000 - "invalid relational operator"
*Cause:
*Action:
Fehler in Zeile: 10 Spalte: 1
Bitte warten ..
Mitglied: em-pie
02.07.2017 um 22:55 Uhr
Hmm..
hatte deinen Post - zugegebener Maßen - wohl nur überflogen
vergiss den obigen Kram also!

Du brauchst noch ein Subselect auf deine gleiche Sicht, welches du JOINEN kannst/ solltest (wäre eine Variante):
Im Subselect müsstest du zunächst ein GROUP BY mit max(Jahr) erstellen. Diese Sicht JOINST du dann mit deiner obigen Tabelle und verwendest wieder die WHERE CLAUSE

Zu deiner Fehlermeldung:
Dann fehlt dir der Operator im Having:
Deine Jahreszahl wird mit nichts verglichen...
Sagt dir aber auch der Fehlercode, mit dem du von dem Hersteller "begrüßt" wurdest.
http://www.dba-oracle.com/t_ora_00920_invalid_relational_operator.htm


Weiterer Tipp:
Schreibe IMMER zu Beginn, um welche DB es sich handelt....
Bitte warten ..
Mitglied: Biber
02.07.2017 um 23:20 Uhr
Moin StarMann,

dein Statement ist fast ok, aber das Subselect muss in Klammern gesetzt werden.
Und der Alias "un" muss auch bei Unternehmensdaten angegeben werden.
01.
SELECT 
02.
    we.NAME,
03.
    un.BILANZSUMME,
04.
    un.JAHR
05.
from UNTERNEHMENSDATEN un
06.
    join WERTPAPIER we
07.
    on un.WKN = we.WKN
08.
WHERE un.JAHR = (select max(jahr) from UNTERNEHMENSDATEN)
09.
order by  un.BILANZSUMME DESC;
Vorausgesetzt, du hast die Aufgabe richtig interpretiert... nicht dass jeweils das maximal vorhandene jahr je Wertpapier gefordert war.
So jedenfalls werden nur die Wertpapiere angezeigt, die im max(jahr) aller Wertpapiere in der Tabelle vorhanden waren.

Grüße
Biber
Bitte warten ..
Mitglied: StarMann
03.07.2017, aktualisiert um 00:21 Uhr
@em-pie
Ok aber in SQL kann ich doch nicht schachteln oder variablen erzeugen.

@Biber
das habe ich auch schon versucht.
01.
SELECT  
02.
    we.NAME, 
03.
    un.BILANZSUMME, 
04.
    un.JAHR 
05.
from UNTERNEHMENSDATEN un 
06.
    join WERTPAPIER we 
07.
    on un.WKN = we.WKN 
08.
WHERE un.JAHR = (select max(jahr) from UNTERNEHMENSDATEN) 
09.
order by  un.BILANZSUMME DESC;
ORA-00911: Ungültiges Zeichen
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action:
Fehler in Zeile: 1 Spalte: 8
Bitte warten ..
Mitglied: Biber
LÖSUNG 03.07.2017 um 05:16 Uhr
Moin StarMann,

Versuche mal bitte statt
WHERE ...= ( SELECT...)

Alternativ ein

WHERE ... IN (SELECT...)

Grüße
Biber
Bitte warten ..
Mitglied: StarMann
03.07.2017, aktualisiert um 08:42 Uhr
@Biber
Nein leider auch nicht

01.
SELECT   
02.
    we.NAME,  
03.
    un.BILANZSUMME,  
04.
    un.JAHR  
05.
from UNTERNEHMENSDATEN un  
06.
    join WERTPAPIER we  
07.
    on un.WKN = we.WKN  
08.
WHERE un.JAHR = in(SELECT MAX(jahr) FROM UNTERNEHMENSDATEN)  
09.
order by  un.BILANZSUMME DESC;
Fehler
ORA-00936: Ausdruck fehlt
00936. 00000 - "missing expression"
*Cause:
*Action:
Fehler in Zeile: 8 Spalte: 17


Oh Sorry Funktionier doch

01.
SELECT   
02.
    we.NAME,  
03.
    un.BILANZSUMME,  
04.
    un.JAHR  
05.
from UNTERNEHMENSDATEN un  
06.
    join WERTPAPIER we  
07.
    on un.WKN = we.WKN  
08.
WHERE un.JAHR in(SELECT MAX(jahr) FROM UNTERNEHMENSDATEN)  
09.
order by  un.BILANZSUMME DESC;
10.
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL-Abfrage mit MAX()
gelöst Frage von FrAmErDatenbanken9 Kommentare

Hallo zusmamen, ich komm leider bei einem Problem nicht weiter. Angenommen wir haben eine SQL-Tablle die folgendermaßen aussieht: Spiel ...

Batch & Shell

Batch mit If Bedingung nur ausführen wenn Wert aus TXT übereinstimmt

gelöst Frage von zeroblue2005Batch & Shell17 Kommentare

Hallo Zusammen, ich weiss nicht, ob das überhaupt möglich ist mit einer Batchzu lösen, aber ich würde gerne in ...

PHP

Magento PHP if Bedingung wenn Attribut bestimmten Wert hat echo ausgeben, Syntax?

Frage von sbsnewbiePHP1 Kommentar

Moin Leude, habe folgende Frage, bei der ich nicht weiterkomme: Ich möchte beim mir im Magentowarenkorb folgendes umsetzen: Bei ...

Batch & Shell

Powershell - if Bedingung

gelöst Frage von pps4535Batch & Shell4 Kommentare

Moin, moin, ich dachte ich mal einen neuen Thread auf, damit es geordnet abläuft :-) Hier habe ich schon ...

Neue Wissensbeiträge
Datenschutz
TeamViewer gehackt !
Information von aqui vor 15 MinutenDatenschutz1 Kommentar

Hat schon einen Grund warum verantwortungsvolle Admins diese Software nicht einsetzen und sie in den meisten größeren Firmen aus ...

Netzwerke

Cisco Security Warnung für SoHo Switches der SG Serie

Information von aqui vor 1 TagNetzwerke3 Kommentare

Update auf eine aktuelle Version wäre also eine gute Idee ! ;-)

Sicherheit

Der TeamViewer-Entwickler war 2016 Opfer eines Cyber-Angriffs

Information von kgborn vor 1 TagSicherheit1 Kommentar

Ich denke, nur wenige dürften die kleine Firma TeamViewer aus Göppingen kennen - und einsetzen wird die Produkte von ...

Internet
Google sperrt Anzeigen kleiner IT-Dienstleister
Erfahrungsbericht von the-buccaneer vor 2 TagenInternet10 Kommentare

Falscher Film? In nem Roman von Kafka gelandet? Mitnichten. Orwell lässt grüßen. Heute sperrte Google meine über AdWords geschaltete ...

Heiß diskutierte Inhalte
Router & Routing
Reverse Proxy - Anfängerfragen
Frage von NixVerstehenRouter & Routing13 Kommentare

Servus zusammen, endlich Freitag und ich darf wieder meine Anfängerfragen stellen :-) Ich bereite gerade einen Testaufbau für ein ...

Internet
Google sperrt Anzeigen kleiner IT-Dienstleister
Erfahrungsbericht von the-buccaneerInternet10 Kommentare

Falscher Film? In nem Roman von Kafka gelandet? Mitnichten. Orwell lässt grüßen. Heute sperrte Google meine über AdWords geschaltete ...

Grafikkarten & Monitore
4 Bildschirminhalte auf einem Monitor abbilden
Frage von KuemmelGrafikkarten & Monitore7 Kommentare

Moin Kollegen, ich bin auf der Suche nach einer Monitorlösung. Ich habe 4 Industrie PCs die ich gerne per ...

Windows Server
W10 - RDP : was ist die einfachste, kleinste und kostengünstigste Lösung für 3 User gleichzeitig
Frage von mabiesWindows Server7 Kommentare

Hallo, es gibt intern genutzte Software, die man alle Jahre mal braucht. Dann mal der, mal der andere. Die ...