列のサブセットを選択したいテーブルがありますが、キュー内の場所に基づいて計算列を最後に追加します。次のフィールドがあります (関連する)。
id: int、自動インクリメント、主キー answertime: datetime、nullable
デフォルトでは、何かがキューに送信されると、応答時間は NULL になります。そのため、キュー内のモノの ID とキュー内のランクを選択したいと考えています (つまり、ランク 1 は未回答の次のアイテムなどです)。これが私が考えていたことです:
ランク - id - COUNT (応答時間が null ではない、自分の id より下の id)。ただし、このクエリの構文に問題があります。
SELECT id AS outerid, COUNT(
SELECT * FROM tablename WHERE id<outerid AND answertime IS NOT NULL
)
FROM tablename
WHERE answertime IS NULL;
明らかに、これは間違っています。なぜなら、集約関数内に選択を埋め込むことはできないと確信しているためです。同様に、コードのその時点で SELECT を埋め込むことができないため、SELECT と COUNT を反転しても機能しません。 (WHERE 句でのみ使用できます)。
これはSQLだけでも可能ですか、それともプログラムの最後にロジックを追加する必要がありますか?
それが役立つ場合は、SQL Server 2008 でこれを行っていますが、それが価値をもたらすとは思えません。