sql >> データベース >  >> RDS >> Sqlserver

このクエリで Accounts テーブルのすべての列を取得したいのですが、エラーが発生しています

    クエリに group by 句があります。クエリで group by 句を使用する場合、select ステートメントのすべての列は、group by リストの一部である必要があるか、何らかの集計 (Sum 、カウント、平均、最大など)。これを行わないと、SQL は列の処理方法を認識できません。あなたの場合、Accounts.regno と Accounts.model は select にリストされていますが、group by 句には含まれておらず、集計でもありません - したがって、エラーです。

    差し当たり、アカウント名と slacc が同じで Regno (またはモデル) が異なる 2 つのアカウント レコードがあるとします。 group by 句は、表示のために 1 つのレコードに結合する必要があることを示していますが、その方法を SQL に指示していません。データがそうでなくても問題ありません。SQL は最初にエラーの可能性を探します。

    この場合、おそらくすべての詳細をグループ化する必要があります。最も簡単な方法は、次のように、グループ化に必要なすべての列を追加することです

    select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, count(servicing.dt) as total 
    from Accounts 
       left outer join servicing on Accounts.slacc = servicing.slacc 
    group by Accounts.slacc, Accounts.name, Accounts.regno, Accounts.model
    

    これによりエラーは修正されますが、必要のない余分なグループ化が行われ、アカウントから必要な列がさらに多くある場合は、それらをすべて追加する必要があるため、非常に面倒になります。これを処理する別の方法は、グループ クエリに最小量の列を使用し、その結果をメイン クエリに結合して他の列を取得することです。これはおそらく次のようになります

    select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, Totals.Total 
    from Accounts
       left outer join 
         ( Select slacc, count(dt) as total
           from servicing
           group by slacc
         ) Totals on Totals.slacc = Accounts.slacc
    



    1. Mysqlテーブルの重複レコードをカウントしますか?

    2. LINQクエリ句の順序はEntityFrameworkのパフォーマンスに影響を与える必要がありますか?

    3. mysql配列phpを保存します

    4. データベースの推移的な依存関係を解決するためのSQLクエリ