簡體   English   中英

創建聯合查詢的正確 MS Access SQL 語法是什么

[英]What is the correct MS Access SQL syntax for creating a union query

Microsoft 文檔指出:

CREATE VIEW view [(field1[, field2[, ...]])] AS selectstatement

並列出了一些規定。 我正在嘗試使用ADODB使用CREATE VIEW語句創建聯合查詢。 聯合本身我可以在 Access (2013) 中運行並保存(它顯示它被保存為帶有兩個互鎖小圓圈圖標的聯合查詢)。 但是 Microsoft.ACE.OLEDB.12.0 引擎抱怨在子查詢中不允許使用Unions或者在VIEWS只允許使用簡單的SELECT查詢。 我需要使用DAO還是有不同的語法? 我的創建視圖語句是:

uString = "CREATE VIEW vwSpendingTotals (Spending, Name) as SELECT Spending, Name FROM " & _
" (SELECT  Sum( tblA.Amount) as Spending, 'Auto' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_AUTO as tblA on gl.Trans_ID = tblA.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)  Union " & _
" SELECT  Sum( tblH.Amount) as Spending, 'Household' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Household as tblH on gl.Trans_ID = tblH.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblL.Amount) as Spending, 'Living' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Living as tblL on gl.Trans_ID = tblL.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)  union " & _
" SELECT  Sum( tblM.Amount) as Spending, 'Medical' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Medical as tblM on gl.Trans_ID = tblM.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblP.Amount) as Spending, 'Personal' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Personal as tblP on gl.Trans_ID = tblP.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblU.Amount) as Spending, 'Utilities' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Utilities as tblU on gl.Trans_ID = tblU.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)) order by Name"
objConnection.Execute uString

objConnection已在腳本中較早地實例化。 是否應該更新 Microsoft 文檔以反映 Jet 12 引擎返回的錯誤,還是我在吠錯樹?

提前致謝,哈羅德

您是否在子查詢后使用別名運行它:

uString = "CREATE VIEW vwSpendingTotals (Spending, Name) as SELECT Spending, Name FROM " & _
" (SELECT  Sum( tblA.Amount) as Spending, 'Auto' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_AUTO as tblA on gl.Trans_ID = tblA.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)  Union " & _
" SELECT  Sum( tblH.Amount) as Spending, 'Household' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Household as tblH on gl.Trans_ID = tblH.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblL.Amount) as Spending, 'Living' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Living as tblL on gl.Trans_ID = tblL.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)  union " & _
" SELECT  Sum( tblM.Amount) as Spending, 'Medical' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Medical as tblM on gl.Trans_ID = tblM.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblP.Amount) as Spending, 'Personal' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Personal as tblP on gl.Trans_ID = tblP.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT  Sum( tblU.Amount) as Spending, 'Utilities' as Name from tblGeneral_Ledger  gl " & _
" inner join tblAccount_Utilities as tblU on gl.Trans_ID = tblU.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1))a order by Name"
objConnection.Execute uString

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM