Как сохранить и посчитать, сколько раз значение вводится в таблицу на сервере SQL - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующий пример, где я получаю идентификатор

DECLARE @ScheduleId NVARCHAR (max),@DateTime DATETIME = GETDATE()
DECLARE @Date VARCHAR(8) = CONVERT(NVARCHAR(8),@DateTime,112)
SET @ScheduleId = (SELECT TOP 1 sc.ScheduleID
FROM dbo.Subscriptions s WITH(NOLOCK) inner join dbo.ReportSchedule sc WITH(NOLOCK) on s.SubscriptionID=sc.SubscriptionID
WHERE LastRunTime>=@Date and LastRunTime< @Date

, выше приведенный мне ScheduleID, это работает отлично.У меня есть столбец с именем COUNT, как показано ниже, я пытаюсь добиться того, чтобы при возвращении идентификатора расписания его нужно было ввести в таблицу, но он должен подсчитать количество раз, когда он был введен.например:

если идентификатор расписания при выполнении вышеуказанного запроса возвращает @ScheduleID='DREVJHIS-59545GRTHS ', то он должен быть вставлен в таблицу

insert into Table (ScheduleID,Count)
values(@scheduleID,count // how do i do a count here)

Таблица

ScheduleID          | Count
DREVJHIS-59545GRTHS |   1 

//so the 1 would mean that  only one time does this specific ID exists in this table

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

ScheduleID          | Count
DREVJHIS-59545GRTHS |   2   // so here now it shows that 2 times the id has been entered into this table.

есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Также будет учитываться добавление нулевых значений:

Тестовая таблица:

CREATE table yourtable(ScheduleID varchar(20), Count INT)    

Синтаксис:

DECLARE @ScheduleID varchar(20) = 'DREVJHIS-59545GRTHS'

;Merge yourtable t1
USING
(SELECT 0 x) t2
ON exists
  (
    SELECT t1.ScheduleID 
    INTERSECT
    SELECT @ScheduleID
  )
WHEN matched THEN
UPDATE
SET count += 1
WHEN not matched THEN
INSERT (ScheduleID, Count)
VALUES(@ScheduleID, 1);
0 голосов
/ 03 октября 2018

Вы можете использовать:

    if Not Exists (Select 1 from Table where ScheduleID = @ScheduleID)
Begin
insert into Table (ScheduleID,Count)
values(@scheduleID,1)
End
else
Begin
Update Table set Count = Count + 1 Where ScheduleID = @ScheduleID
End
...