У меня есть запрос, который будет проходить через множество таблиц, которые добавят count(*)
, чтобы создать процент выполнения для идентификатора. То, как это было написано, позволяет вам найти процент за 1 ID за раз. Мне нужно запустить это, чтобы получить все проценты для более чем 100 000 идентификаторов.
Я пытался сделать так, чтобы @ID имел значение много, но получаю ошибку:
Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
Я пробовал объединение, но поскольку существует много ценностей, это кажется пустой тратой. Я также попытался переписать запрос, но так как в нем задействовано очень много таблиц и есть место для ошибок, я не хочу идти по этому пути, если есть более простой путь.
Ниже приведена более простая версия того, с чем я на самом деле работаю.
DECLARE @ID INT
SELECT @ID = (SELECT ID FROM table WHERE date > 2018)
SELECT
@ID ID,
SUM(CASE WHEN [BITFIELD] > 0 THEN 1 ELSE 0 END) AS IS_COMPLETED
FROM
Table
Данные, которые я получаю:
ID is_complete
-------------------------
1 15
Данные, которые я хочу:
ID is_complete
------------------------
1 15
2 100
3 20