0
私は窓関数で解決しました以下のケースでは、Sql結合ソリューションが有効でしょうか?
関係:下の表では、Ordersテーブルの各注文は、IDを参照するcust_id外部キー列を使用して、顧客テーブルの列。
質問:各営業担当者の最大受注額と関連する受注番号を、その注文が属する顧客および営業担当者とともに探します。ウィンドウ機能付きの
Create Table Salesperson
(
ID int,
name varchar(100),
age float,
salary money
);
Create Table Orders
(
Number int,
order_date datetime,
cust_id int,
salesperson_id int,
Amount money
);
Create Table Customer
(
ID int,
name varchar(100),
city varchar(100),
IndustryType varchar(100)
);
insert into Salesperson values
(1,'Rohit',25,50000),
(2,'Pramod',25,50000),
(3,'Atul',25,50000);
insert into Orders values
(1,getdate(),101,1,50000),
(2,getdate(),101,1,500000),
(3,getdate(),102,1,10000),
(4,getdate(),101,2,5000),
(5,getdate(),102,2,700000),
(6,getdate(),102,2,10000);
insert into Customer values
(101,'Altu','bhopal','IT'),
(102,'bltu','bhopal','ITES'),
(103,'cltu','bhopal','NW');
ソリューション:
with CTE_MaxAmount
as
(
select max(amount) over (partition by salesperson_id) as amount,
dense_rank() over (partition by salesperson_id order by amount) as rowid,
cust_id,
salesperson_id,number
from Orders with(nolock)
)
select ct.amount,
ct.cust_id,
c.name as customername,
s.name as salesman,
ct.salesperson_id,
number as OrderNumbner
from Customer c
join CTE_MaxAmount ct
on (c.id = ct.cust_id)
join Salesperson s
on (s.id = ct.salesperson_id)
where rowid = 1;
協力いただきありがとうございます。.. !!!! – Rohit