potter_ricky
New Member
- Joined
- Oct 7, 2010
- Messages
- 22
In short I would like to join two queries using MSQuery, returning into an Excel workbook.
It’s the joining of the two queries that I’m struggling to figure out.
The underlying data comes from a workbook that has two sheets, each sheet containing a table. I cannot amend the workbook or sheets in any way.
The tables do have a relationship (date & source) but also have a unique field each which is not relevant to the other (bucket & booking ID).
Also a table may have a date and/or a source that the other doesn’t.
I would like to full join these tables ignoring their unique fields.
I have been able to write a query for each table that removes their unique fields, and then write a separate query that full joins the outputs.
What I would like to do is combine all three queries if possible.
My work so far:
Sheet 1 = ‘Data’:
[TABLE="class: grid, width: 500, align: left"]
<tbody>[TR]
[TD]Date
[/TD]
[TD]Source
[/TD]
[TD]Bucket
[/TD]
[TD]Cost (£)
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Australia
[/TD]
[TD]B2
[/TD]
[TD]78.9694
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Australia
[/TD]
[TD]B1
[/TD]
[TD]29.6856
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Australia
[/TD]
[TD]B2
[/TD]
[TD]157.759
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Malaysia
[/TD]
[TD]B1
[/TD]
[TD]1.426
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Malaysia
[/TD]
[TD]B1
[/TD]
[TD]1.922
[/TD]
[/TR]
[TR]
[TD]15-Feb-13
[/TD]
[TD]Malaysia
[/TD]
[TD]B2
[/TD]
[TD]1.178
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Singapore
[/TD]
[TD]B1
[/TD]
[TD]2.976
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Singapore
[/TD]
[TD]B2
[/TD]
[TD]60.45
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Singapore
[/TD]
[TD]B1
[/TD]
[TD]28.272
[/TD]
[/TR]
</tbody>[/TABLE]
Sheet 2 = ‘Data2’:
[TABLE="class: grid, width: 500"]
<tbody>[TR]
[TD]Booking ID
[/TD]
[TD]Date Booked
[/TD]
[TD]Commission GBP
[/TD]
[TD]Source
[/TD]
[/TR]
[TR]
[TD]19861052
[/TD]
[TD]30/08/12
[/TD]
[TD]118.524375
[/TD]
[TD]Australia
[/TD]
[/TR]
[TR]
[TD]21537304
[/TD]
[TD]05/02/13
[/TD]
[TD]36.2591328
[/TD]
[TD]Others
[/TD]
[/TR]
[TR]
[TD]21537643
[/TD]
[TD]05/02/13
[/TD]
[TD]69.6276
[/TD]
[TD]Malaysia
[/TD]
[/TR]
[TR]
[TD]21537681
[/TD]
[TD]05/02/13
[/TD]
[TD]105.60186
[/TD]
[TD]Malaysia
[/TD]
[/TR]
[TR]
[TD]21537712
[/TD]
[TD]05/02/13
[/TD]
[TD]165.105216
[/TD]
[TD]Australia
[/TD]
[/TR]
</tbody>[/TABLE]
Data Query:
SELECT FORMAT([Data$].[Date],'dd/mm/yyyy') AS [Date], [Data$].[Source] AS [Source], Sum([Data$].[Cost (£)]) AS [Cost]
FROM [\\Location\Data.xlsx].[Data$] [Data$]
GROUP BY [Data$].[Date], [Data$].[Source]
HAVING ([Data$].[Date] Is Not Null)
Data2 Query:
SELECT FORMAT([Data2$].[Date Booked],'dd/mm/yyyy') AS [Date], [Data2$].[Source] AS [Source], Sum([Data2$].[Commission GBP]) AS [Commission]
FROM [\\Location\Data.xlsx].[Data2$] [Data2$]
GROUP BY [Data2$].[Date Booked], [Data2$].[Source]
HAVING ([Data2$].[Date Booked] Is Not Null)
Full Join Query:
SELECT [Query1$].[Date] AS [Date], [Query1$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] INNER JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
UNION
SELECT [Query2$].[Date] AS [Date], [Query2$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] RIGHT JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
WHERE ([Query1$].[Date] IS NULL) AND ([Query1$].[Source] IS NULL)
UNION
SELECT [Query1$].[Date] AS [Date], [Query1$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] LEFT JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
WHERE ([Query2$].[Date] IS NULL) AND ([Query2$].[Source] IS NULL)
Output wanted:
[TABLE="class: grid, width: 500"]
<tbody>[TR]
[TD]Date
[/TD]
[TD]Source
[/TD]
[TD]Cost
[/TD]
[TD]Commission
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Australia
[/TD]
[TD]157.7589
[/TD]
[TD]165.1052
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Malaysia
[/TD]
[TD]1.922
[/TD]
[TD]175.2293
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Others
[/TD]
[TD][/TD]
[TD]36.2591
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Singapore
[/TD]
[TD]88.722
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]15/02/2013
[/TD]
[TD]Malaysia
[/TD]
[TD]1.178
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Australia
[/TD]
[TD]108.6549
[/TD]
[TD]118.5243
[/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Malaysia
[/TD]
[TD]1.426
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Singapore
[/TD]
[TD]2.976
[/TD]
[TD][/TD]
[/TR]
</tbody>[/TABLE]
It’s the joining of the two queries that I’m struggling to figure out.
The underlying data comes from a workbook that has two sheets, each sheet containing a table. I cannot amend the workbook or sheets in any way.
The tables do have a relationship (date & source) but also have a unique field each which is not relevant to the other (bucket & booking ID).
Also a table may have a date and/or a source that the other doesn’t.
I would like to full join these tables ignoring their unique fields.
I have been able to write a query for each table that removes their unique fields, and then write a separate query that full joins the outputs.
What I would like to do is combine all three queries if possible.
My work so far:
Sheet 1 = ‘Data’:
[TABLE="class: grid, width: 500, align: left"]
<tbody>[TR]
[TD]Date
[/TD]
[TD]Source
[/TD]
[TD]Bucket
[/TD]
[TD]Cost (£)
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Australia
[/TD]
[TD]B2
[/TD]
[TD]78.9694
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Australia
[/TD]
[TD]B1
[/TD]
[TD]29.6856
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Australia
[/TD]
[TD]B2
[/TD]
[TD]157.759
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Malaysia
[/TD]
[TD]B1
[/TD]
[TD]1.426
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Malaysia
[/TD]
[TD]B1
[/TD]
[TD]1.922
[/TD]
[/TR]
[TR]
[TD]15-Feb-13
[/TD]
[TD]Malaysia
[/TD]
[TD]B2
[/TD]
[TD]1.178
[/TD]
[/TR]
[TR]
[TD]30-Aug-12
[/TD]
[TD]Singapore
[/TD]
[TD]B1
[/TD]
[TD]2.976
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Singapore
[/TD]
[TD]B2
[/TD]
[TD]60.45
[/TD]
[/TR]
[TR]
[TD]05-Feb-13
[/TD]
[TD]Singapore
[/TD]
[TD]B1
[/TD]
[TD]28.272
[/TD]
[/TR]
</tbody>[/TABLE]
Sheet 2 = ‘Data2’:
[TABLE="class: grid, width: 500"]
<tbody>[TR]
[TD]Booking ID
[/TD]
[TD]Date Booked
[/TD]
[TD]Commission GBP
[/TD]
[TD]Source
[/TD]
[/TR]
[TR]
[TD]19861052
[/TD]
[TD]30/08/12
[/TD]
[TD]118.524375
[/TD]
[TD]Australia
[/TD]
[/TR]
[TR]
[TD]21537304
[/TD]
[TD]05/02/13
[/TD]
[TD]36.2591328
[/TD]
[TD]Others
[/TD]
[/TR]
[TR]
[TD]21537643
[/TD]
[TD]05/02/13
[/TD]
[TD]69.6276
[/TD]
[TD]Malaysia
[/TD]
[/TR]
[TR]
[TD]21537681
[/TD]
[TD]05/02/13
[/TD]
[TD]105.60186
[/TD]
[TD]Malaysia
[/TD]
[/TR]
[TR]
[TD]21537712
[/TD]
[TD]05/02/13
[/TD]
[TD]165.105216
[/TD]
[TD]Australia
[/TD]
[/TR]
</tbody>[/TABLE]
Data Query:
SELECT FORMAT([Data$].[Date],'dd/mm/yyyy') AS [Date], [Data$].[Source] AS [Source], Sum([Data$].[Cost (£)]) AS [Cost]
FROM [\\Location\Data.xlsx].[Data$] [Data$]
GROUP BY [Data$].[Date], [Data$].[Source]
HAVING ([Data$].[Date] Is Not Null)
Data2 Query:
SELECT FORMAT([Data2$].[Date Booked],'dd/mm/yyyy') AS [Date], [Data2$].[Source] AS [Source], Sum([Data2$].[Commission GBP]) AS [Commission]
FROM [\\Location\Data.xlsx].[Data2$] [Data2$]
GROUP BY [Data2$].[Date Booked], [Data2$].[Source]
HAVING ([Data2$].[Date Booked] Is Not Null)
Full Join Query:
SELECT [Query1$].[Date] AS [Date], [Query1$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] INNER JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
UNION
SELECT [Query2$].[Date] AS [Date], [Query2$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] RIGHT JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
WHERE ([Query1$].[Date] IS NULL) AND ([Query1$].[Source] IS NULL)
UNION
SELECT [Query1$].[Date] AS [Date], [Query1$].[Source] AS [Source], [Query1$].[Cost] AS [Cost], [Query2$].[Commission] AS [Commission]
FROM [\\Location\Output.xlsx].[Query1$] [Query1$] LEFT JOIN [\\Location\Output.xlsx].[Query2$] [Query2$]
ON [Query1$].[Date] = [Query2$].[Date] AND [Query1$].[Source] = [Query2$].[Source]
WHERE ([Query2$].[Date] IS NULL) AND ([Query2$].[Source] IS NULL)
Output wanted:
[TABLE="class: grid, width: 500"]
<tbody>[TR]
[TD]Date
[/TD]
[TD]Source
[/TD]
[TD]Cost
[/TD]
[TD]Commission
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Australia
[/TD]
[TD]157.7589
[/TD]
[TD]165.1052
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Malaysia
[/TD]
[TD]1.922
[/TD]
[TD]175.2293
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Others
[/TD]
[TD][/TD]
[TD]36.2591
[/TD]
[/TR]
[TR]
[TD]05/02/2013
[/TD]
[TD]Singapore
[/TD]
[TD]88.722
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]15/02/2013
[/TD]
[TD]Malaysia
[/TD]
[TD]1.178
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Australia
[/TD]
[TD]108.6549
[/TD]
[TD]118.5243
[/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Malaysia
[/TD]
[TD]1.426
[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]30/08/2012
[/TD]
[TD]Singapore
[/TD]
[TD]2.976
[/TD]
[TD][/TD]
[/TR]
</tbody>[/TABLE]