0

ORM クエリにサブクエリが含まれている場合 (RawSQL式または Django 1.11 の新しいSubquery式で簡単に実行できます)、Django ORM の count メソッドはそれを group by 句に追加します。

簡単な例を次に示します。

qs = Activity.objects.filter(...).annotate(feed_date=RawSQL('SELECT MAX(feed_date) FROM core_track WHERE ...'))
qs.count()

これにより、以下のようなものが生成されます。

SELECT COUNT_BIG(*) FROM 
(SELECT [core_activity].[id] AS Col1, 
(SELECT MAX(feed_date) FROM core_track WHERE activity_id=id) AS [feed_date] 
FROM [core_activity] WHERE (...) 
GROUP BY [core_activity].[id], (SELECT MAX(feed_date) FROM core_track WHERE activity_id=id))

通常、Postgres を使用し、この sql を喜んで受け入れて実行します。ただし、新しい顧客は、group by ステートメントでのサブクエリを好まない SQL Server を使用する必要があります。

Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause

私は何かを見落としているのか、何か間違っているのか、それとも適切な回避策があるのか​​ (このクエリが通過できるようにするSql Serverの設定など)があるのだろうかと思います。助言がありますか?

4

0 に答える 0