Skip to main content

Pivot table / cross tab query or transform in SQL and Access

I have been working with and orders database and trying to move away from pivot table forms, since they are a little messy, so started playing with the SQL Transform command, which is how pivot tables are implemented in SQL OR perhaps where the original Pivot tables.

The problem I had is the Access only lets you do a Crosstab query with the query wizard on a table or query, and since I was trying to have a faster result I wanted to do just use one query. So I used the main table to create the query (Access automatically displays relation data, so on forms this would be enough) and then one by one I replace the fields with the relational fields I wanted.

So my original query looked like this


TRANSFORM Sum(OrdersTbl.QuantityOrdered) AS SumOfQuantityOrdered
SELECT OrdersTbl.RoastDate, OrdersTbl.CompanyID AS DeliverTo, OrdersTbl.DeliveryById, OrdersTbl.RequiredByDate AS DeliveryDate
FROM OrdersTbl
WHERE (OrdersTbl.Done=False)
GROUP BY OrdersTbl.RoastDate, OrdersTbl.CompanyID, OrdersTbl.DeliveryById, OrdersTbl.RequiredByDate
ORDER BY OrdersTbl.RequiredByDate, OrdersTbl.DeliveryById
PIVOT OrdersTbl.ItemID;

I then started look around on the Internet on how to do the JOINS, and found two great sites:

Which helped me create the following


TRANSFORM Sum(OrdersTbl.QuantityOrdered) AS SumOfQuantityOrdered
SELECT OrdersTbl.RoastDate, CompanyTbl.CompanyName AS DeliveryTo, OrdersTbl.RequiredByDate, PersonsTbl.Abreviation
FROM PersonsTbl INNER JOIN (CustomersTbl INNER JOIN (OrdersTbl INNER JOIN ItemTypeTbl ON OrdersTbl.ItemTypeID = ItemTypeTbl.ItemTypeID) ON CustomersTbl.CustomerID = OrdersTbl.CustomerId) ON PersonsTbl.PersonID = OrdersTbl.ToBeDeliveredBy
WHERE (OrdersTbl.Done=False)
GROUP BY OrdersTbl.RoastDate, OrdersTbl.RequiredByDate, PersonsTbl.Abreviation, CompanyTbl.CompanyName
ORDER BY OrdersTbl.RequiredByDate, PersonsTbl.Abreviation
PIVOT ItemTypeTbl.ItemDesc;

The thing to not here is that the web sites I found had the syntax of the cross tab wrong for Access, I kept on getting Syntax Error (missing operator) in query expression ....


A few things to notice is that the field names in the select and the feild names in the order by are not the aliases.

So I actually used the designer, deleted the links that where not required, and was able to create the query above. So now I am going to use it programatically. So why did I blog this, perhaps some poor sole will be saved some work if they find it (perhaps a future me for example ;))

Comments

Popular posts from this blog

April 7 March – Reflection

The Reality I was unsure if people care enough to make an effort. I planned to join the April 7 March to Save South Africa from the Cape Town Town Hall to Parliament the next day. Arriving in town we could see things were different. We walked past the Market in St Georges mall and saw almost no one there.  As we carried on walking towards the Grand Parade we heard first the motorbikes, then the people. Even though it was not yet noon, the crowd that had gathered was substantial, a lot more than the legal limit of 8,000. I looked up the street and then realized that the crowd was very large, my insecurity that no one cared enough to make an effort seemed like a joke. After some politically charged messages we started a slow march towards Parliament via Buitenkant. It was a slow march with some politically charged chanting – but was peaceful. When we got close to parliament as we could I realized there were a lot of people there.  Pers...

Balance

Category: Ponderous When ever you talk to "life coaches" they talk about balance. What is balance, well it is there way of saying spend more time on personal things. That is not balance that is spending more time on personal things. Balance is what people tell you to get, when you are spending too much time trying to ensure that each day when the bills come you do not have a panic attack. So let's say you decide to take some personal time – get more balance in your life. Your read the secret you have the vision you write the goals, you project your positive thinking, and you believe in attaining the goals you have set. The question is what then. Balance implies there is a fulcrum and, and to much of any time on the one side of the fulcrum, is going to tip in other way, surely believing in balance is in itself a limiting belief. What you need to strive for is a pie chart of your time spent the way that is most beneficial to you as a person. The real limit we have is time (...

SMTP servers of South Africa

SMTP Settings Below is a list of SMTP sites in South Africa, using this and the ISP Map you can try and find which one works best for you. Telkom smtp.saix.net (ADSL) smtp.telkomsa.co.za (56k dial up) smtp.telkomsa.net Internet Solutions smtp.isdsl.net (ADSL) smtp.dial-up.net (56k dial up on IS) smtp.layerone.net (3g backbone) Vodacom smtp.vodacom.co.za smtp.vodamail.co.za MTN smtp.mtn.co.za Cell C smtp.cellc.co.za (GPRS) mail.cmobile.co.za (also used by Virgin) ABSA mail.absa.co.za iBurst smtp.wbs.co.za smtp.iburst.co.za @lantic smtp.lantic.net (ADSL,Dialup, ISDN) Sentech smtp.sentech.co.za MWEB smtp.mweb.net (ADSL) - this is to be retired End June 2012, use below instead smtp.mweb.co.za (56k dial-up & ADSL & business) iAfrica smtp.uunet.co.za smtp.iafrica.com Neotel smtp.neotel.co.za Tiscali NOW MWeb smtp.tiscali.co.za Netactive NOW MWeb smtp.netactive.co.za Global smtp.global.co.za Hertzner Use y...