У меня есть таблица, из которой я хочу выбрать подмножество столбцов, а также добавить в конце вычисляемый столбец в зависимости от того, где вы находитесь в очереди. Существуют следующие поля (относящиеся к делу):
id: int, автоинкремент, первичный ключ
время ответа: datetime, nullable
По умолчанию, когда что-то отправляется в очередь, его время ответа равно NULL. Итак, я хочу выбрать идентификатор вещи в очереди, а также ее ранг в очереди (т. Е. Ранг 1 - следующий элемент без ответа и т. Д.). Вот о чем я думал:
rank - id - COUNT (идентификаторы ниже моего идентификатора, где время ответа не равно нулю). Однако у меня возникла проблема с синтаксисом этого запроса:
SELECT id AS outerid, COUNT(
SELECT * FROM tablename WHERE id<outerid AND answertime IS NOT NULL
)
FROM tablename
WHERE answertime IS NULL;
Теперь, очевидно, это неправильно, потому что я вполне уверен, что вы не можете встроить выбор в агрегатную функцию, аналогично, переключение SELECT и COUNT не работает, поскольку вы не можете встроить SELECT в этот момент в коде (он может использоваться только в предложении WHERE).
Это вообще возможно сделать только с SQL или мне нужно добавить логику в конец программы?
Если это поможет, я делаю это на SQL Server 2008, хотя сомневаюсь, что это добавит какую-либо ценность.