SQL Server 2005+, с использованием аналитических функций:
SELECT t.docid,
t.writing,
t.submissiondate,
ROW_NUMBER() OVER(ORDER BY t.submissiondate) AS position
FROM YOUR_TABLE t
Не аналитическая версия
При таком подходе существует риск непоследовательных значений, потому что, если есть две (или более) записи с одинаковым значением submissiondate
- все они будут иметь одинаковое значение позиции. Это наравне с использованием аналитических функций RANK или DENSE_RANK, поскольку ROW_NUMBER всегда будет предоставлять уникальное значение для каждой записи без учета дублирующих значений.
SELECT x.docid,
x.writing,
x.submissiondate,
(SELECT COUNT(*)
FROM YOUR_TABLE y
WHERE y.submissiondate <= x.submissiondate) AS position
FROM YOUR_TABLE x