0

アラバマ州の各顧客 (購入したことがないアラバマ州の顧客を含む) の最大の購入額の顧客コード、顧客の姓名、完全な住所、請求書の日付、および請求書の合計を表示するクエリを作成する必要があります。 ; 請求書の日付は NULL で、請求書の合計は 0 として表示されます)。

以下は、必要な 2 つのテーブルの ERD です。

これが私の最新のクエリの外観です。

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
4

0 に答える 0