我有两个名为" User"和" userAudit"。
所以我使用以下查询从Audit表生成一个PIVOT表以及字段和相应的数据:
@Cols是动态长度,它可能有两列或三列或任意数量的以逗号分隔的列。
所以我使用此查询生成动态PIVOT表:
EmployeeID FirstName
1 xxx
And my selct * from User
给了我
EmployeeID FirstName LastName
1 asdf qwer
但我需要输出
EmployeeID FirstName LastName
1 xxx qwer
这意味着我需要更新从该PIVOT表更新的修改值字段 当我选择最终输出时
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
set @cols = 'EmployeeID, FirstName';
SET @query = @query +
' SELECT DISTINCT p.*
FROM
(
select
e.UserID,
e.FieldName,
(' <Some dynamic Queries to run> ') As Data
FROM temp e
) x
pivot
(
max(DATA)
for FieldName in (' + @cols + ')
) p'
EXEC sp_executesql @query;
编辑:
我的UserAudit表格如下:
UserID ModifiedColumnName PreviuosData UpdatedData Date
1 FirstName XXX asdf 12/01/2014
用户表:
UserID FirstName LAstName Address date
1 asdf qwer wretwertwerter 12/03/2014
所以每当我更新这个用户表时,我都会记录哪个字段被修改,以及修改前后的值以及在哪个日期。
所以,当我需要知道用户数据在特定日期的样子时(例如:2014年1月12日),然后我将遍历Audit表,找到我必须选择的字段(如同FistName名称)以上情况)并读取适当的值(表示读取&#34; previousData&#34;字段值)并将其与其他用户表数据一起返回。
UserID FirstName LastName Address
1 xxx qwer wretwertwerter
由于