KonraderPils Geschrieben 28. August 2007 Teilen Geschrieben 28. August 2007 Hallo also ich schreibe morgen eine Arbeit in Datenbanken und Ich komme bei 2 Fragen nicht zurecht die da wären 3) Lassen Sie sich für alle Mitarbeiter anzeigen, wann sie zum ersten Mal am Neujahrsempfang teilgenommen haben (am 01.01. des auf die Einstellung folgenden Jahres). Ich habs mit round versucht der rundet dann zwar auf den 01.01.XY aber das JAHR stimmt nicht bei jedem weil er bei manchen ab und bei manchen auf rundet. 4)Lassen Sie sich die Mitarbeiternummer, den Namen als Nachnamen und das Jahresgehalt (12* das Gehalt und 3* die Provision oder 500$ für alle die keine Provision erhalten können) anzeigen, gerundet auf Tausender für alle Mitarbeiter außer den Analysten. Das wäre die zweite da habe ich sogut wie ka wäre nett wenn einer die Lösung hätte. ;( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 28. August 2007 Teilen Geschrieben 28. August 2007 ... 3) Lassen Sie sich für alle Mitarbeiter anzeigen, wann sie zum ersten Mal am Neujahrsempfang teilgenommen haben (am 01.01. des auf die Einstellung folgenden Jahres). ... Wenn ich das richtig verstanden habe, dann brauchst du Trunc und nicht Round. Functions, 155 of 177 Bei der zweiten Aufgabe könnte dir das hier weiterhelfen: Functions, 89 of 177 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 28. August 2007 Teilen Geschrieben 28. August 2007 3.) select '01.01.'||to_char( to_number(to_char(datumsspalte,'YYYY'))+1 ) "1. Neujahrsfeier" from tabelle; Einfach das Einstellungsjahr mit to_char herausfilter, in einen nummerischen Wert umwandel und 1 aufaddieren. Für die Ausgabe dann wieder in einen String umwandeln und den 01.01. konkartinieren. Lassen Sie sich die Mitarbeiternummer, den Namen als Nachnamen und das Jahresgehalt (12* das Gehalt und 3* die Provision oder 500$ für alle die keine Provision erhalten können) anzeigen, gerundet auf Tausender für alle Mitarbeiter außer den Analysten. Hmm da wär die Tabellenstruktur nicht schlecht gewesen. Ansonsten muss ich ein bissl raten. SELECT mitarbeiterid, name as nachname, CASE mitarbeitertyp WHEN 'Analyst' THEN gehalt*12 + NVL2(provision,3*provision,500) ELSE ROUND( gehalt*12 + NVL2(provision,3*provision,500),-3) END CASE FROM tabelle; Den Spaltennamen Nachname vergeben (AS ist optional) und dann im CASE Block zwischen Analysten und anderen unterscheiden. Über ROUND Runden und NVL2 gibt bei NULL-Werten unterschiedliche Rückgabewerte. Bei der Aussage: für alle Mitarbeiter außer den Analysten bin ich mir nicht sicher ob die eine andere Rundung bekommen sollten oder direkt ausgeschlossen werden müssen. Ist letzteres der Fall, das CASE rausnehmen und statt dessen auf WHERE mitarbeitertyp <>'Analyst' abfragen. Mehr Infos zu den verwendeten Funktionen kannst Du hier über die Suche bekommen: Oracle Database Online Documentation 10g Release 2 (10.2) Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KonraderPils Geschrieben 29. August 2007 Autor Teilen Geschrieben 29. August 2007 Danke für die Hilfen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.