KonraderPils Geschrieben 28. August 2007 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. ;(
grueni Geschrieben 28. August 2007 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
dr.dimitri Geschrieben 28. August 2007 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden