2016-08-01 41 views
1

我嘗試:訪問更新查詢瓦特/子查詢

UPDATE [DATA OUTPUT TABLE] 
(
SELECT [DATA OUTPUT TABLE].[Journal Voucher ID], [DATA OUTPUT TABLE].[dBranch] AS Branch, [DATA OUTPUT TABLE].[dBranch] & " Shared Appropriation" AS [Shared Appropriation] 

FROM [DATA OUTPUT TABLE] 

WHERE [DATA OUTPUT TABLE].[Journal Voucher ID] In 

    (
    SELECT [DATA OUTPUT TABLE].[Journal Voucher ID] 
    FROM [DATA OUTPUT TABLE] 
    GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID] 
    HAVING 
     (((First([DATA OUTPUT TABLE].dBranch)="Navy") 
     AND 
     (Last([DATA OUTPUT TABLE].dBranch)="USMC")) 
     OR 
     ((First([DATA OUTPUT TABLE].dBranch)="USMC") 
     AND 
     (Last([DATA OUTPUT TABLE].dBranch)="Navy"))) 
) 
;) AS SATable 
SET [DATA OUTPUT TABLE].[Shared Appropriation] = SATable.[Shared Appropriation] 
Where [DATA OUTPUT TABLE].[Journal Voucher ID] = SATable.[Journal Voucher ID], [DATA OUTPUT TABLE].[dBranch] = SATable.[Branch]; 

我的目標是更新在[DATA OUTPUT TABLE]與[dBranch]字段的級聯和「共享撥款[共享撥款]列「從我的查詢(作品):

SELECT [DATA OUTPUT TABLE].* 
FROM [DATA OUTPUT TABLE] 

WHERE ((([DATA OUTPUT TABLE].[Journal Voucher ID]) In (SELECT [DATA OUTPUT TABLE].[Journal Voucher ID] 
FROM [DATA OUTPUT TABLE] 
GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID] 
HAVING (((First([DATA OUTPUT TABLE].dBranch))="Navy") AND ((Last([DATA OUTPUT TABLE].dBranch))="USMC")) OR (((First([DATA OUTPUT TABLE].dBranch))="USMC") AND ((Last([DATA OUTPUT TABLE].dBranch))="Navy"));))); 

我的想法是爲工作查詢創建一個別名,SATable,並將其引入更新查詢。

+0

當你更新後'加逗號[數據輸出表]',即'UPDATE [數據輸出表]發生什麼事,(SELECT [DATA .....'? – cha

+0

你的嘗試有什麼問題 - 它是語法錯誤嗎?或者它沒有正確更新? – dbmitch

+0

@cha之後,我得到「From子句中的語法錯誤」 – Schalton

回答

0

你的查詢可以被重新寫入此:

UPDATE [DATA OUTPUT TABLE] 
SET [DATA OUTPUT TABLE].[Shared Appropriation] = [dBranch] & " Shared Appropriation" 
Where [DATA OUTPUT TABLE].[Journal Voucher ID] IN 
    (
    SELECT [DATA OUTPUT TABLE].[Journal Voucher ID] 
    FROM [DATA OUTPUT TABLE] 
    GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID] 
    HAVING 
     (((First([DATA OUTPUT TABLE].dBranch)="Navy") 
     AND 
     (Last([DATA OUTPUT TABLE].dBranch)="USMC")) 
     OR 
     ((First([DATA OUTPUT TABLE].dBranch)="USMC") 
     AND 
     (Last([DATA OUTPUT TABLE].dBranch)="Navy"))) 
)