У меня есть эта таблица, и я хочу, чтобы поставить номер ранга/строки к строкам со следующим условиемTSQL Помещенный тот же ранг/номер строки на той же колонке А, но приращению раз колонка А изменения
- же IO будет имеют такой же ранг/номер строки
- Номер ранга/строки увеличивается, как только IO в следующей строке отличается от предыдущей строки.
Таблица отсортирована по AccessDate затем AccessTime и сгруппированы по UserID
Я использую этот запрос, но выход не то, что я хочу, чтобы это было.
SELECT
ATTCHECKINOUT.UserID,
AccessDate = CAST(CheckTime as date),
AccessTime = CAST(CheckTime as time),
CheckType,
Ranking = DENSE_RANK() over(partition by ATTCHECKINOUT.UserID, CAST(CheckTime as date) order by CheckType)
FROM ATTCHECKINOUT INNER JOIN ATTUSER ON ATTCHECKINOUT.UserID=ATTUSER.UserID
WHERE CheckTime BETWEEN '1/6/2017' AND '1/10/2017' AND ATTUSER.BadgeNumber = 10311
ORDER BY ATTCHECKINOUT.UserID, CheckTime
Вывод запроса
UserID |AccessDate |AccessTime |IO |Ranking
8394 |2017-01-06 |11:24:10 |I |1
8394 |2017-01-06 |11:24:15 |I |1
8394 |2017-01-06 |13:05:13 |O |2
8394 |2017-01-06 |13:05:18 |O |2
8394 |2017-01-06 |13:34:17 |I |1
8394 |2017-01-06 |13:34:20 |I |1
8394 |2017-01-06 |20:35:01 |O |2
8394 |2017-01-06 |20:35:05 |O |2
8394 |2017-01-07 |10:59:49 |I |1
8394 |2017-01-07 |10:59:52 |I |1
8394 |2017-01-07 |17:02:54 |O |2
8394 |2017-01-07 |17:29:39 |I |1
8394 |2017-01-07 |17:29:43 |I |1
8394 |2017-01-07 |20:13:02 |O |2
8394 |2017-01-07 |20:13:05 |O |2
8394 |2017-01-09 |08:32:38 |I |1
8394 |2017-01-09 |08:32:45 |I |1
8394 |2017-01-09 |20:02:52 |O |2
8394 |2017-01-09 |20:02:55 |O |2
Я хочу выход быть как этот
UserID |AccessDate |AccessTime |IO |Ranking
8394 |2017-01-06 |11:24:10 |I |1
8394 |2017-01-06 |11:24:15 |I |1
8394 |2017-01-06 |13:05:13 |O |2
8394 |2017-01-06 |13:05:18 |O |2
8394 |2017-01-06 |13:34:17 |I |3
8394 |2017-01-06 |13:34:20 |I |3
8394 |2017-01-06 |20:35:01 |O |4
8394 |2017-01-06 |20:35:05 |O |4
8394 |2017-01-07 |10:59:49 |I |1
8394 |2017-01-07 |10:59:52 |I |1
8394 |2017-01-07 |17:02:54 |O |2
8394 |2017-01-07 |17:29:39 |I |3
8394 |2017-01-07 |17:29:43 |I |3
8394 |2017-01-07 |20:13:02 |O |4
8394 |2017-01-07 |20:13:05 |O |4
8394 |2017-01-09 |08:32:38 |I |1
8394 |2017-01-09 |08:32:45 |I |1
8394 |2017-01-09 |20:02:52 |O |2
8394 |2017-01-09 |20:02:55 |O |2
эта ссылка поможет вам http://stackoverflow.com/questions/41949621/dense-rank-without-duplication/41949896#41949896 –
никакой задержки функции для SQL 2008 –
есть несколько ответов с/без функции задержки .. сделал u chk второй ответ (с рекурсивным cte) ???? –