0

私は次のように3つのテーブルを持っています:

Salesperson
1)ID
2)Name
3)Age
4)Salary

Customer
1)ID
2)Name
3)City
4)IndustryType

Orders
1)Number
2)Order_date
3)cust_id
4)salesperson_id
5)Amount

ここに問題があります。各販売員の最大注文額と関連する注文番号、およびその注文が属する顧客を見つけます。

これを実践しながら

Select salesperson_id,Numbers As ordernum,Amount
from dbo.Orders As Ord  Inner Join 
(
Select salesperson_id,Max(Amount) as MaxOrder
from dbo.Orders
group by salesperson_id
) as TopOrder
on TopOrder.salesperson_id = Ord.salesperson_id 
where TopOrder.MaxOrder=Ord.Amount

しかし、それはエラーを示しています:

Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'salesperson_id'.
4

5 に答える 5

1

クエリには 2 つの salesperson_id があり、1 つはテーブル Orders にあり、もう 1 つはサブクエリ TopOrder にあります。

ベスト プラクティスは、常にフィールド名をテーブル名またはエイリアスで修飾することです。

于 2013-04-04T10:04:23.537 に答える
0

SQL サーバーが using キーワードをサポートしているかどうかはわかりません。私が知っている唯一のデータベースは redbrick です。変更しなければならない場合があります

using (saleperson_id)

where toporder.salesperson_id = orders.salesperson_id
于 2013-04-04T09:56:35.883 に答える
0
select sp.Name, od.Numbers, Max(od.Amount)
from SalesPerson as sp left join Orders as od  on sp.ID = od.salesperson_id
Group By sp.ID
having od.Amount = Max(od.Amount)

このクエリは、すべての販売担当者の名前と注文番号を最大金額でリストするのに役立ちます これを試して、役立つかどうかフィードバックしてください

于 2013-04-04T10:00:47.200 に答える