私はこれをMS-SQLで実行しようとしていますが、Group by lineでエラーを返します
update #temp
Set Dos=Count(1)
From Temp_Table2010 s
where Id=s.Total and s.total in (Select Id from #temp)
group by s.Total
優れたパフォーマンスを発揮してこの問題を解決する方法を誰もが知っていますか?.
試してみる
;with counts
AS
(
SELECT total, COUNT(*) as dos
FROM temp_table2010
WHERE total in (select id from #temp)
)
UPDATE T
SET dos=counts.dos
FROM #temp T
INNER JOIN counts
ON t.id = counts.total
SQL Serverでは、更新クエリで集計を実行できます。サブクエリで集計を実行し、更新するテーブルで結合するだけです。
UPDATE #temp
SET Dos = Cnt
FROM #temp
INNER JOIN (SELECT Total, COUNT(*) AS Cnt FROM Temp_Table2010 GROUP BY Total) AS s
ON Id = s.Total
これを行う:
WHERE total in (select id from #temp)
その後:
INNER JOIN counts
ON t.id = counts.total
冗長です。
結合は、「合計(...)」要件を解決します。キーでグループ化してから参加します。
まず、UPDATEクエリで集計を使用することはできません。元の質問にエラーメッセージを含めていませんでしたが、それが伝えていることだと思います。
更新前に集計を計算し、結果を一時テーブルに保存してから、そのテーブルに結合して更新を行う必要があります。