1

私はテーブルRequestとテーブルを持っていますSearch。テーブルにはID列があり、これはRequestIDとしてRequestの外部キーです。同じRequestIDを持つSearch複数の行が存在する可能性があります。Searchステータスには別の列がありSearch、完了または未完了のいずれかになります。私が欲しいのは、各RequestIDに対して返されるクエリです。

RequestIDCount of Search rows with 'Complete'--- _Count of Search rows with 'Incomplete'

これはSQLで簡単にできることですか?

4

1 に答える 1

6

試す :

SELECT RequestId,
SUM(CASE WHEN Status = 'Complete' THEN 1 ELSE 0 END),
SUM(CASE WHEN Status = 'Incomplete' THEN 1 ELSE 0 END)
FROM Search
GROUP BY RequestId

このリクエストで検索が行われていなくても、すべてのRequestIdを一覧表示する場合は、次の操作を実行できます。

SELECT r.Id,
SUM(CASE WHEN s.Status = 'Complete' THEN 1 ELSE 0 END),
SUM(CASE WHEN s.Status = 'Incomplete' THEN 1 ELSE 0 END)
FROM Request r
LEFT JOIN Search s ON r.Id = s.RequestId
GROUP BY r.Id

SQLFiddleを参照してください

于 2013-01-13T18:42:07.340 に答える