Мне нужен запрос, который COUNT выполняет все строки (с условием WHERE) во всех таблицах в базе данных, где неизвестны имена table_names. Причина, почему: У меня есть «alarm_logging_system», которая каждый месяц создает новую таблицу «архив» и автоматически называет ее «AlarmLog (временная метка последнего активного аварийного сигнала)»SQL-COUNT все строки с условием WHERE во всех таблицах в базе данных
Так что мне нужен запрос, который динамически ищет через все таблицы, которые существуют в базе данных, СЧИТАЕТ всю строку в столбце с условием WHERE и возвращает одно единственное значение.
В примере я хочу получить все активные аварийные сигналы, в этом месяце, в прошлом месяце и т. Д. Или определенный временной диапазон.
Это пример запроса я написал, чтобы получить количество для всех активных сигналов тревоги в прошлом месяце
SELECT COUNT(ConditionActive)
FROM (whole database)???
WHERE (Acked=0 AND ConditionActive = 1)
AND (EventTime >= DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0))
AND [EventTime] <= DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
AS ACTIVE_LAST_MONTH
Так что мне нужно, это запрос, stored_procedure или динамический запрос SQL?
Все таблицы имеют одинаковые схемы и столбцы.
Цените всю помощь!
Каждая таблица во всей базе данных имеет одинаковую структуру? Это звучит невероятно плохо. Вам понадобится использовать динамический sql для такого рода вещей. –
В базе данных будильника все таблицы одинаковы. Система работает следующим образом: все тревоги регистрируются в «настоящую» таблицу, которая содержит записи за последние 7 дней. Когда день продолжается, «старые» записи (последние 7 дней) вставляются в таблицу «Архивирование», которая содержит записи за месяц и т. Д., В общей сложности 24 таблицы. Почему это проблема, что все таблицы одинаковы? –
Большинство баз данных - это больше, чем коллекция для одного фрагмента данных. Вы можете подумать о разметке вместо десятков и десятков одной и той же таблицы снова и снова. –