#sql #sql-server #information-schema
#sql #sql-сервер #информация-схема
Вопрос:
В моей базе данных около 1500 таблиц. Я использовал информационную схему для перечисления всех таблиц и всех столбцов в каждой из этих таблиц.
Я хотел бы узнать самое последнее значение столбцов
Select Table_name, Column_name
From DB.Information_Schema.Columns
Это возвращает этот вывод:
Table_name| Column_name
---------- ------------
A | C1
A | C2
A | C3
Были отображены все 1500 таблиц.
Теперь я хочу получить третий столбец, который дает мне самое последнее значение (т. Е. самое последнее значение) каждого столбца
Table_name | Column_name| Column_Value
----------- ------------ --------------
A | C1 | V1
A | C2 | V2
Комментарии:
1. Во-первых, как вы определяете «самое последнее значение»? Во-вторых, для этого потребуется какой-то динамический SQL.
2. Это намного сложнее, чем вы можете подумать. Для начала вам понадобится столбец в каждой таблице для идентификации самой последней записи. Затем вам понадобится динамический SQL для построения запроса (поскольку таблицы для запроса известны только во время выполнения). И даже в этом случае вам все равно нужно преобразовать типы данных, чтобы все могло поместиться в один столбец.
3. Может быть, было бы проще, чтобы для каждой таблицы вы создавали какой-то триггер для вставок, чтобы для каждой новой вставки в таблицу эта вставка также обновлялась в другую таблицу, которая содержит последние значения для каждого столбца?
4. Я думаю, что лучшая идея — использовать триггер для заполнения таблицы тремя столбцами (имя_таблицы, имя_колоноки_в_значении), и каждый триггер сначала удаляет последние значения, относящиеся к этой таблице, затем заполняет эту таблицу для выбора (1) вставленной таблицы триггера
5. В зависимости от вашего лицензирования, CDC может быть тем, что вы ищете вместо триггеров. Но, честно говоря, как сказал Гордон, сначала вам нужно определить, «какое самое последнее значение», какой король базы данных (oltp, warehouse, … ?) и структура таблицы, особенно если у вас есть общий системный столбец вашей модели