Обновите таблицу SQL Server, чтобы сделать это с помощью хранимой процедуры - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужно обновить столбец SQL Server с помощью автоматически сгенерированного серийного номера, основанного на восходящей дате SELECT, а также для столбца с типами.

Вот мой алгоритм:

1. To update a column AppNo  
update column_of_interest 
from_above_table 
auto_increment value (1..n)
where 
following datetime_col desc
2a. If Requesttype is AAA for a select where 
following datetime_col desc then there should be a different (1...n)
update
2b. If Requesttype is BBB for a select where 
following datetime_col desc then there should be a different (1...n)
update
3. The AppNo should reset each day, for each Requestype too.

На данный момент моя интересующая колонка (AppNo) пока пуста. Я хотел бы обновить его, как показано ниже:

ProjectID AppNo ProcessedDate
--------- ----- ----------------
       11     3 2019-09-30 18:21
        3     1 2019-09-25 08:37
        3     2 2019-09-25 08:37
       11     1 2019-09-25 08:39
       11     2 2019-09-25 08:40
        7     1 2019-09-26 14:19
        7     2 2019-09-26 14:20
        7     3 2019-09-26 14:22
        2     1 2019-09-26 14:23
       11     1 2019-09-26 14:23
       11     2 2019-09-26 14:24
       11     3 2019-09-26 14:24
        3     1 2019-09-26 14:24

Мне нужно заполнить свой столбец интересов на основе вышеуказанного.

Ответы [ 3 ]

0 голосов
/ 01 октября 2019

Каждое утро вы можете запускать запрос ниже, чтобы обновлять все записи предыдущего дня с правильным номером каждого дня для каждого типа запроса.

;WITH CTE_TableToUpdate
(
SELECT ColumntoUpdate, DateOfUpdate, RequestType
Row_Number() OVER(PARTITION BY RequestType, DateOfUpdate ORDER BY DateOfUpdate) AS rn
FROM TableToUpdate
WHERE ColumnToUpdate IS NULL
AND DateOfUpdate < CAST(GETDATE() AS DATE)
)
UPDATE CTE_TableToUpdate
SET ColumnToUpdate = rn
0 голосов
/ 02 октября 2019

Этот вопрос должен быть помечен как дубликат мной. Ответ на вопрос здесь

0 голосов
/ 01 октября 2019

Вопрос не очень понятен, но я думаю, что вы ищете функцию row_number(), например:

select
  foo,
  bar,
  baz,
  column_of_interest = row_number() over (order by datetime_col desc)
from above_table

Это не вычисляемый столбец,se, так как он не является частью схемы таблицы, но должен достичь желаемого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...