Reputation: 39
I am new to vb.net so bear with me. I have some managable tables in ms access database. I am trying to write a sql query that will give me following output:
table1 ( columnA - columnB) table2 ( columnA - columnB) table3 ( columnA - columnB)
I have column name "column A" and “column B" in all tables.
I want to retrieve tables name and sum of (column A – column B) of all tables. When I run the sql statement I get the following error:
The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect
Can someone help me to write a sql query please?
Here is my full code:
Dim con As New OleDbConnection(" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\msacc.accdb")
Dim Query2 As String = " SELECT Table1 AS Table, SUM(a) - SUM(b) AS Result FROM table1 UNION SELECT Table2, SUM(a) - SUM(b) FROM table2 UNION SELECT Table3, SUM(a) - SUM(b) FROM table3"
Dim Da As OleDbDataAdapter, Ds As New DataSet, Dtb As New System.Data.DataTable
con.Open()
Da = New OleDbDataAdapter(Query2, con)
Da.Fill(Ds)
con.Close()
Dtb = Ds.Tables(0)
DataGridView1.DataSource = Dtb
Upvotes: 3
Views: 1340
Reputation: 92785
If understand correctly you're probably looking for this
'Table1'
, Table2
, 'Table3'
)[]
around an alias that is a reserved word ([Table]
)UNION ALL
instead of UNION
since you don't need to eliminate any duplicates in your resultsetSELECT 'Table1' AS [Table], SUM(a) - SUM(b) AS Result
FROM table1
UNION ALL
SELECT 'Table2', SUM(a) - SUM(b)
FROM table2
UNION ALL
SELECT 'Table3', SUM(a) - SUM(b)
FROM table3
Here is SQLFiddle demo (SQL Server) The query itself will work in MS Access just fine
Upvotes: 4
Reputation: 2505
You have done mistake in this Query2. Dont use SELECT Table1 AS Table
instead of this use select 'Table1' as [table]
Upvotes: 0
Reputation: 9322
SELECT Table1 AS Table
The word Table
is a reserved word so used other name.
And SUM()
is an aggregate function wherein you need to use a GROUP BY
clause.
Upvotes: 0