Cross Tab Query How to Get Distinct Values

hgriff16

New Member
Joined
Jul 29, 2019
Messages
4
Hello everyone, This is my first time posting just as an FYI. I am trying to make a cross tab query that shows Location as the rows and Week Number as the Columns with a value set up in builder. Where I'm running into an issue is that in order to get the accurate value, I need the distinct count or Order ID's because items are shipped together and each shipment cost $3.5 + the sum of the part cost.. Every Time I try to group the Order ID's the locations duplicate, but the values are correct. Let me know if there is any more information you need.Thanks
 

Excel Facts

Do you hate GETPIVOTDATA?
Prevent GETPIVOTDATA. Select inside a PivotTable. In the Analyze tab of the ribbon, open the dropown next to Options and turn it off
Sounds like it's not working but it's not entirely clear what your sql is doing. You probably should post the query text (and some sample data if possible).
 
Upvote 0
Here is the SQL data.

TRANSFORM Sum([bo5a]![Total Parts Cost]+3.5) AS Expr1
SELECT bo5a.[Service Location Name]
FROM bo5a LEFT JOIN Calander ON bo5a.[Date Fullfilled (Common)] = Calander.[2019]
WHERE (((Calander.[Period ])=10) AND ((bo5a.[National Account Flag])="N"))
GROUP BY bo5a.[Service Location Name], bo5a.[Fulfillment Order Id], Calander.[Period ], bo5a.[National Account Flag]
PIVOT Calander.Week;



and I cannot publish any sample data because it has customer information on it.
 
Upvote 0
The grouping looks like it won't work that way but it is hard to say because I don't see what is being grouped. However, since you are grouping on fields that aren't in the output it is almost certainly creating extra groups that will appear as duplicate rows.

One solution would be to put the results in a temp table, then select distinct from that table - effectively removing the duplicates. (two steps).

Another would be to resolve the grouping and get the output fixed up on in a first query then do the pivot transform on the first query (also two steps).

You don't need to publish the actual data. Just dummy data that can be used to replicate the problem.
 
Upvote 0
Service Location NameFulfillment Order IDDate Fulfilled (Common)Total Parts Cost
Albany110/1/2019120
Albany110/1/201940
Albany210/1/201920
Albany310/8/201945
Orlando510/1/201921
Orlando510/1/201912
Orlando610/15/201934

<colgroup><col span="2"><col><col></colgroup><tbody>
</tbody>

This is what the data basically looks like and at the end it should look like

Service Location Name Week 1 Week 2 Week 3
Albany18648
Orlando3637

<colgroup><col span="2"><col><col></colgroup><tbody>
</tbody>

So if the fulfillment order ID is the same they go on the same truck so the shipping would only be $3 per distinct fulfillment order.
 
Upvote 0
using my second two step solution described above, first you preprocess the data to get something that works for the crosstab:

Code:
select 
	T.[Service Location Name], 
	T.[Date Fulfilled (Common)], 
	Sum((T.[TotalPartsCost])+3) as TotalCost

from
	(
		select 
			[Service Location Name], 
			[Date Fulfilled (Common)], 
			[Fulfillment Order ID], 
			Sum([Total Parts Cost]) as TotalPartsCost
		from
			Table13
		group by 
			[Service Location Name], 
			[Date Fulfilled (Common)], 
			[Fulfillment Order ID]
	) T

group by 
	T.[Service Location Name], 
	T.[Date Fulfilled (Common)]

Then you can cross tab it:
Code:
transform Sum(TotalCost) AS SumOfTotalCost
select 
	[Service Location Name]
from
	Query34
group by 
	[Service Location Name]
pivot 
	[Date Fulfilled (Common)];


The result of the first query is (I call this Query 34):
---------------------------------------------------------------
| Service Location Name | Date Fulfilled (Common) | TotalCost |
---------------------------------------------------------------
| Albany                | Week 1                  |       186 |
| Albany                | Week 2                  |        48 |
| Orlando               | Week 1                  |        36 |
| Orlando               | Week 3                  |        37 |
---------------------------------------------------------------


The result of the second query is (I call this Query35):
----------------------------------------------------
| Service Location Name | Week 1 | Week 2 | Week 3 |
----------------------------------------------------
| Albany                |    186 |     48 |        |
| Orlando               |     36 |        | 37     |
----------------------------------------------------



Note:
I didn't bother with the dates - not sure if you really need date data transformed into Week 1, Week 2, etc. but that would be an additional piece if so.
 
Last edited:
Upvote 0

Forum statistics

Threads
1,213,535
Messages
6,114,194
Members
448,554
Latest member
Gleisner2

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top