这是一个非常简化的陈述愿景
SELECT
ChangeId,
ColumnName,
BeforeChange,
CASE ColumnName
WHEN 'x' THEN AfterChange ELSE 'dbo.function(Y)'
END AS AfterChange,
AfterChangeUpdateId,
UpdatedBy,
ChangeDate,
ChangeType
FROM
[DEV].[dbo].[tblperson_Audit]
不确定这是否可行,但我想将ColumnName
值传递给CASE
声明,以显示不同的结果,具体取决于每一行的值。
该函数传递一个整数值。
任何帮助都会非常感谢
答案 0 :(得分:0)
你能试试吗?假设函数返回单个值
SELECT ChangeId,
ColumnName,
BeforeChange,
CASE ColumnName WHEN 'x' THEN AfterChange ELSE dbo.function(ColumnName) END AS AfterChange,
AfterChangeUpdateId,
UpdatedBy,
ChangeDate,
ChangeType
FROM [DEV].[dbo].[tblperson_Audit]
答案 1 :(得分:0)
Madhivanan解决方案中的轻微语法错误。它应该是:
case when condition() then column1 else column2 end as columnname
所以在你的例子中:
CASE WHEN 'x' THEN AfterChange ELSE 'dbo.function(Y)' as AfterChange
SQL Server的条件语法似乎总是如此反直觉和奇怪我每次都要谷歌...