2017-05-27 125 views
-1

SQL查询:SQL:更新数据透视表

SELECT id,mti,[24] AS nii,mid,tid,[63-D9] AS TxnType,[63-DB] AS batchStatus , 
[39] AS respondCode,[61] AS batchNumber, uploadStatus 
FROM (SELECT e.id,m.capDateTime,mti,procCode,mid,tid,uploadStatus,txnDate,txnTime,fieldNumber,fieldData FROM dbo.iso_fields e 
JOIN dbo.iso_main m ON e.id = m.id) a PIVOT (MAX(fieldData) FOR fieldNumber IN 
([0],[1],[2],[3],[5],[6],[7],[8],[9],[10],[12],[13],[14],[15],[16],[17],[18],[19],[20], [21],[22],[23],[24],[25],[26],[27],[28],[29],[30], 
[31],[32],[33],[34],[35],[36],[39],[40], [41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60], 
[61],[63],[64],[63-D9],[63-DB]))PIV 

我试着去更新例如表:

UPDATE PIV SET batchStatus = 'C' 
    SELECT id,mti,[24] AS nii,mid,tid,[63-D9] AS TxnType,[63-DB] AS batchStatus , 
    [39] AS respondCode,[61] AS batchNumber, uploadStatus 
    FROM (SELECT e.id,m.capDateTime,mti,procCode,mid,tid,uploadStatus,txnDate,txnTime,fieldNumber,fieldData FROM dbo.iso_fields e 
    JOIN dbo.iso_main m ON e.id = m.id) a PIVOT (MAX(fieldData) FOR fieldNumber IN 
    ([0],[1],[2],[3],[5],[6],[7],[8],[9],[10],[12],[13],[14],[15],[16],[17],[18],[19],[20], [21],[22],[23],[24],[25],[26],[27],[28],[29],[30], 
    [31],[32],[33],[34],[35],[36],[39],[40], [41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60], 
    [61],[63],[64],[63-D9],[63-DB]))PIV 
WHERE nii = '0000' 

Im相当肯定是不正确的语法和IM在如此可怕的数据透视表的

+0

您正在使用哪些DBMS? “SQL”是一种查询语言,而不是特定DBMS产品的名称(另外:您的示例查询是无效的标准SQL) –

回答

0

查看您的查询后,似乎您正在更新一个不可能的PIVOT“PIV”。数据透视仅带有聚合子句。你无法更新它。

如果我正确理解你的问题,你想刷新PIVOT数据,如果这个假设是正确的,那么你需要更新你在PIVOT中使用的主表或者使用临时表来反映更新的数据。