アラバマ州の各顧客 (購入したことがないアラバマ州の顧客を含む) の最大の購入額の顧客コード、顧客の姓名、完全な住所、請求書の日付、および請求書の合計を表示するクエリを作成する必要があります。 ; 請求書の日付は NULL で、請求書の合計は 0 として表示されます)。
select distinct lgcustomer.cust_code
,Cust_FName
,Cust_LName
,Cust_Street
,Cust_City
,Cust_State
,Cust_ZIP
,max(inv_total) as [Largest Invoice]
,inv_date
from lgcustomer left join lginvoice on lgcustomer.cust_code = lginvoice.cust_code
where Cust_State = 'AL'
group by lgcustomer.cust_code
,Cust_FName
,Cust_Lname
,Cust_Street
,Cust_City
,Cust_State
,Cust_ZIP
,Inv_Date
DISTINCT lgcustomer.cust_code と MAX(inv_total) のみを使用しているにもかかわらず、その顧客のすべての inv_total を返す理由がわかりません。
私の教授はUNIONを利用するように言っていますが、私が理解しているように、それは同じ属性を持つ2つの異なるテーブルをコンパイルするためのものです...
正しい方向に私を向けることができる応答に感謝します!
解決
クラスでたどり着いた答えは、相関サブクエリとユニオンを使用することでした。
select c.cust_code
,cust_fname
,cust_lname
,cust_street
,cust_city
,cust_state
,inv_date
,inv_total
from lgcustomer c left outer join lginvoice i on c.cust_code = i.cust_code
where cust_state = 'AL'
and inv_total = (select max(inv_total)
from lginvoice i2
where i2.cust_code = c.cust_code)
union
select c.cust_code
,cust_fname
,cust_lname
,cust_street
,cust_city
,cust_state
,''
,0
from lgcustomer c left outer join lginvoice i on c.cust_code = i.cust_code
where cust_state = 'AL'
and inv_date is null
and inv_total is null
order by cust_lname asc