У меня есть таблица, из которой я хочу выбрать подмножество столбцов, но также добавить в конце вычисляемый столбец в зависимости от того, где вы находитесь в очереди. Имеются следующие поля (имеющие значение):
id: int, автоинкремент, время ответа первичного ключа: datetime, nullable
По умолчанию, когда что-то отправляется в очередь, его время ответа равно NULL. Итак, я хочу выбрать идентификатор вещи в очереди, а также ее ранг в очереди (т.е. ранг 1 — это следующий элемент, на который нет ответа, и т. д.). Вот о чем я думал:
ранг - идентификатор - 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, хотя сомневаюсь, что это принесет какую-либо пользу.