У меня есть таблица истории, и мне нужно выбрать значения из этой таблицы в форме ColumnName, ColumnValue. Я использую SQL Server 2008, и я не был уверен, могу ли я использовать функцию PIVOT для этого. Ниже приведен упрощенный пример того, что мне нужно выполнить:Выберите данные строки как ColumnName и значение
Это то, что у меня есть:
схема стола является
CREATE TABLE TABLE1 (ID INT PRIMARY KEY, NAME VARCHAR(50))
«история» схемы таблицы является
CREATE TABLE TABLE1_HISTORY(
ID INT,
NAME VARCHAR(50),
TYPE VARCHAR(50),
TRANSACTION_ID VARCHAR(50))
Вот данные ТАБЛИЦА 1_ИСТОРИЯ
ID NAME TYPE TRANSACTION_ID
1 Joe INSERT a
1 Bill UPDATE b
1 Bill DELETE c
Мне нужно извлечь данные из TABLE1_HISTORY в этот формат:
TransactionId Type ColumnName ColumnValue
a INSERT ID 1
a INSERT NAME Joe
b UPDATE ID 1
b UPDATE NAME Bill
c DELETE ID 1
c DELETE NAME Bill
Помимо обновления до версии Enterprise Edition и используя встроенные функциональные возможности отслеживания изменений, что ваше предложение для решения этой задачи?
Правда, однако в фактической таблице много столбцов, поэтому я надеялся, что вам не придется выполнять оператор select для каждого столбца, так как производительность ужасная. – Bobcat1506
Что говорит вам план выполнения? Много сканирует таблицы? Не добавляет ли индексы покрытия индексы? –