Member 12695777 Ответов: 2

Измените значение столбца на читаемое значение в SQL server


Пожалуйста, посоветуйте –
У меня есть базовая таблица аудита, которая отслеживает элементы, которые "вставлены", "обновлены" или "удалены" в таблице базы данных под названием TableM.
У меня есть триггеры, созданные для записи операции вставки, обновления или удаления строки, и эта запись попадает в таблицу под названием TransactAudit. В TransactAudit таблице есть столбец под названием ‘операция’ записи ‘я’ для вставленных элементов, буквы ‘U’ для обновления элементов и ‘D’ для удаленных элементов.
Я хочу создать представление, которое имеет те же столбцы, но я хочу, чтобы ‘я’, ‘U’ и ‘D’ от TransactAudit таблицы должны быть преобразованы в “вставить’, ‘обновление’ и ‘удалить’, соответственно, при размещении в представлении под названием vw_Audit_Data. Таким образом, таблица TransactAudt сохраняет значения "I", " U " и "D", в то время как представление показывает "вставлено", "обновлено" и "удалено".
Ниже приведен код, который я пробовал до сих пор, но ни один из них не работает.
Я искал в Google черт знает что из этого и почти не нашел никаких советов для этой ситуации.
Я был бы признателен за любую помощь в этом вопросе.
Заранее спасибо.

Что я уже пробовал:

--Here I am creating the basic view
CREATE VIEW [dbo].[vw_Audit_Data]
AS
SELECT        dbo.TransactAudit.*
FROM            dbo.TransactAudit

--Next I am trying to convert the values 
--of the "Operation" column as it is put
--into the view. 

--Tried a basic SET command
SET Operation = 'Inserted'
WHERE Operation = 'I';

SET Operation = 'Deleted'
WHERE Operation = 'D';

SET Operation = 'New Value'
WHERE Operation = 'U';



--Tried a basic WHEN command
WHEN [Operation] = 'I' THEN 'Inserted'
WHEN [Operation] = 'D' THEN 'Deleted'
WHEN [Operation] = 'U' THEN 'New Value'



--Tried a basic WHERE command
WHERE [Operation] = 'I' [Operation] = 'Inserted'
AND
WHERE [Operation] = 'D' [Operation] = 'Deleted'
AND
WHERE [Operation] = 'U' [Operation] = 'New Value'
--I also tried using 'OR', 'IF' and 'WHEN' in place 'AND'
--Nothing seems to work. 

GO

2 Ответов

Рейтинг:
7

Pradeep Magati

Здравствуйте, попробуйте этот,

Создать представление [dbo].[vw_Audit_Data]
АС
SELECT *, CASE WHEN [Operation] = ' I 'THEN ' Inserted'
Когда [операция] = 'D', то "удалено"
Когда [операция] = 'U', то "новое значение"
Конец как [AliasName]
От [dbo].[TransactAudit]


Рейтинг:
15

OriginalGriff

Я бы сделал это так, чтобы у меня был отдельный стол:

ID   DescriptionENG
I    Inserted
D    Deleted
U    New Value

Затем используйте соединение для объединения данных:
SELECT ta.ID, ... , tt.DescriptionENG FROM TransactionAudit ta
JOIN TransactionTypes tt ON ta.Operation = tt.ID