在SQL中基于PIVOT表数据更新表

时间:2014-12-03 15:22:10

标签: sql sql-server sql-server-2008 pivot

我有两个名为" 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

由于

0 个答案:

没有答案