Я пытаюсь создать пакетное обновление своих данных с фильтром даты.
below is my sample table[myTable] data:
+--------+------------+-----------+
| ID | Amount | ResetDay |
+--------+------------+-----------+
| 1 | 100 | 1 |
+--------+------------+-----------+
| 2 | 100 | 2 |
+--------+------------+-----------+
| 3 | 100 | 29 |
+--------+------------+-----------+
| 4 | 100 | 30 |
+--------+------------+-----------+
Вот мой запрос:
update myTable set Amount = 0
where ID in (case when ResetDay > day(eomonth(getdate()))
then (select ID from myTable where ResetDay > day(eomonth(getdate())))
else (select ID from myTable where ResetDay = day(getdate()))) end)
У меня автоматическое пакетное обновление с триггером даты,Я использую условия, что когда ResetDay
больше, чем в конце месяца, он обновит все данные, которые имеют ResetDay
.и если нет, обновятся только данные, равные дате.
Пример запроса и ожидаемый результат: Запрос: (Это для выборки дня окончания месяца меньше, чем ResetDay)
update myTable set Amount = 0
where ID in (case when ResetDay > 28
then (select ID from myTable where ResetDay > 28)
else (select ID from myTable where ResetDay = 1) end)
Output:
+--------+------------+-----------+
| ID | Amount | ResetDay |
+--------+------------+-----------+
| 1 | 100 | 1 |
+--------+------------+-----------+
| 2 | 100 | 2 |
+--------+------------+-----------+
| 3 | 0 | 29 |
+--------+------------+-----------+
| 4 | 0 | 30 |
+--------+------------+-----------+
Как обстоит дело, где состояние SQL Server?Как я получаю сообщение об ошибке при выполнении этих запросов Subquery returned more than 1 value, This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.