0

I have a table like below:

enter image description here

I want to transform the data so that the end product actually looks like this:

enter image description here

This is easily done within Excel but i would like to be able to do this via SQL so i can automate a report.

I have tried the below code which doesn't work:

SELECT 
SKU,
SUM(totals,ordered = 'Web') as Web_orders,
SUM(totals,ordered = 'App') as App_orders

FROM A

GROUP BY SKU
0

2 Answers 2

2

You can make use of case expressions:

SELECT
  sku,
  SUM(case when ordered = 'web' then totals else 0 end) as "web",
  SUM(case when ordered = 'app' then totals else 0 end) as "app"
FROM A
GROUP BY sku
Sign up to request clarification or add additional context in comments.

Comments

2

This will work:

SELECT 
SKU,
SUM(totals) filter (where ordered='web') as Web_orders,
SUM(totals) filter (where ordered='app') as App_orders
FROM A

GROUP BY SKU
ORDER by SKU;

If you want the uppercase letters you need to surround the column names with "".

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.