これが私の質問です: group by で集計関数を使用してレコードの整合性を維持するにはどうすればよいですか?
さらに説明するために、ここに例を示します。
次の列を持つテーブルがあります: (「順序」テーブルと考えてください)
Customer_Summary (first 10 char of name + first 10 char of address)
Customer_Name
Customer_Address
Customer_Postal Code
Order_weekday
「注文」ごとに 1 つの行があるため、顧客名、住所、概要が同じ行が多数あります。
私がやりたいことは、顧客の名前、住所、郵便番号、および各平日の注文数を、顧客の概要別にグループ化して表示することです。
したがって、データは次のようになります。
Summary | Name | Address | PCode | Monday | Tuesday | Wednesday | Thursday | Friday
test custntest addre|test custname|test address|123456 | 1 | 1 | 1 | 1 | 1
似たような顧客概要のレコードをグループ化したいだけですが、明らかに 1 つの名前、住所、および郵便番号を表示したいと考えています。現時点では min() を使用しているため、クエリは次のようになります。
SELECT Customer_Summary, min(customer_name), min(customer_address), min(customer_postal_code)
FROM Order
Group by customer_summary
必要ないと思ったので、平日のロジックは省略しました。
私の問題はこれです - 同じ顧客概要を持つこれらの顧客の一部は、異なる住所と郵便番号を持っています。
したがって、次のような 2 人の顧客がいるとします。
test custntest addre|test custname |test address |323456|
test custntest addre|test custname2|test address2|123456|
group by を使用すると、クエリは次のように返されます。
test custntest addre|test custname |test address |123456|
min を使用しているため、すべてのフィールドの最小値が得られますが、必ずしも同じレコードからではありません。そのため、ここでレコードの整合性が失われました。クエリによって返された住所と名前が郵便番号と正しく一致しません。
では、group by 句を使用するときに、グループ化されていないフィールドでデータの整合性を維持するにはどうすればよいでしょうか?
うまくいけば、私はそれを十分に明確に説明しました。助けてくれてありがとう。
編集:解決しました。みんな、ありがとう!