Итак, у меня есть 3 таблицы, и мне было предложено указать эти 3 конкретные столбцы в качестве параметров.Мой вопрос заключается в том, смогу ли я найти FirstName и LastName инвестора просто с помощью описания портфеля, или мне также придется присоединиться к столам?
(первый оператор выбора относится к таблице, которую я не перечислил)
Investor
InvestorNum FirstName LastName Address
----------- -------- ------- ------
Portfolio
Port num Investor Num Port Description InvestorNum
--------- ------------- ---------------- ----------
Stock
Stock Code Stock Name
---------- ----------
FUNCTION PKG_FN_Q4
(P_Portfolio_Description varchar2, P_Investor_Number number, P_Stock_Name varchar2)
RETURN varchar2
AS
V_Average_Cost varchar2(50);
V_Output varchar2(500);
V_Investor_First_Name varchar2(25);
V_Investor_Last_Name varchar2(30);
V_Stock_Name varchar2(50);
V_Portfolio_Desc varchar2(50);
BEGIN
SELECT TO_CHAR(sum(Quantity*Price_Per_Share)/sum(Quantity))
INTO V_Average_Cost
From Transaction
Where Portfolio_Description = P_Portfolio_Description AND
Investor_Number = P_Investor_Number AND
Stock_Name = P_Stock_Name AND Buy_Sell = 'B';
SELECT First_Name, Last_Name
INTO V_Investor_First_Name, V_Investor_Last_Name
From Investor
Where Portfolio_Description = P_Portfolio_Description
AND Portfolio.Investor_Number = Investor.Investor_Number;
SELECT Stock_Name
INTO V_Stock_Name
From Stock
Where Stock_Name = P_Stock_Name;
SELECT Portfolio_Description
INTO V_Portfolio_Desc
From Portfolio
Where Portfolio_Description = P_Portfolio_Description;
RETURN V_Output = V_Investor_First_Name || V_Investor_Last_Name || 'paid, on average' ||
V_Average_Cost || 'for the stock' || V_Stock_Name || 'in the portfolio' || V_Portfolio_Desc;