Ich habe zwei Datenbanken auf dem gleichen Server (dbA und dbB). Beide haben eine Tabelle namens KUNDEN. Ich möchte das Alter meiner Kunden berechnen und es auf einer Spalte AGE, auf dem dbB.CUSTOMERS, basierend auf dem aktuellen Datum und der DateOfBirth-Spalte in der dba.CUSTOMERS-Tabelle einfügen.Wie Alter in Oracle SQL zu berechnen
das Alter zu berechnen, ich
SELECT floor(months_between(SYSDATE, (SELECT BIRTH_DATE FROM dbA.CUSTOMERS)) /12) from dual;
aber dies gibt ein ORA-01427:single-row subquery returns more than one row
Ich vermute, dies liegt daran, dass die Unterabfrage gibt jede Zeile der BIRTH_DATE Spalte zu verwenden versucht. Gibt es eine Möglichkeit, dies für alle Zeilen zu tun und dann das Ergebnis in meine Tabelle dbB.CUSTOMERS einzufügen?
Ich bin mit OracleSQL
Warum? Das Alter ändert sich im Laufe der Zeit. Sie sollten besser eine Funktion erstellen und aufrufen, wenn sie benötigt wird. Wenn es deterministisch wäre, könnten Sie einen funktionsbasierten Index verwenden; aber das ist nicht deterministisch, also nochmal warum? Scheint mir eine Funktion hier besser zu nutzen. – xQbert
@xQbert Dies ist für eine Übung, so dass das Alter im Laufe der Zeit ist irrelevant. – Akaitenshi
Sehr schlecht gewählte Übung. Was immer der Instruktor versucht zu demonstrieren (oder zu testen), sie sollten bessere Beispiele wählen, die denen ähneln, die man tatsächlich in der realen Welt machen würde. Diese Aufgabe wäre in der realen Welt ziemlich idiotisch, und es wäre sehr einfach, eine aussagekräftige Aufgabe zu entwickeln, die genau die gleichen Merkmale, Techniken usw. demonstriert, ohne zu vermuten, dass das Speichern von Altersangaben in einer Tabelle Sinn macht. Nur meine 2 Cent ... – mathguy