1

I have this result

Visitor name City Price
Neo Japan 95,000
Neo NewYork 100,000
Neo Paris 1,000,000

I want to get this result

Visitor name Japan NewYork Paris
Neo 95,000 100,000 1,000,000
Squirrel
  • 23,507
  • 4
  • 34
  • 32

2 Answers2

3
SELECT V.Visitor_name,
SUM
  (
     CASE  
       WHEN V.CITY='Japan' THEN V.PRICE
       ELSE 0.00 
     END
  )AS JAPAN,
SUM
 (
   CASE  
     WHEN V.CITY='NewYork' THEN V.PRICE
     ELSE 0.00 
   END
 )AS NewYork,
SUM
(
   CASE  
    WHEN V.CITY='Paris' THEN V.PRICE
    ELSE 0.00 
   END
)AS Paris
FROM YOUR_TABLE AS V
GROUP BY V.Visitor_name

If cities names are unknown, then please google "dynamic pivot"

Sergey
  • 4,719
  • 1
  • 6
  • 11
0

Here is the Pivot solution:

SELECT VISITOR_NAME,[Japan],[NewYork],[Paris]
FROM 
(SELECT * FROM TEST_TABLE) AS S
PIVOT
(SUM(PRICE)
FOR CITY IN ([Japan],[NewYork],[Paris])
) AS P

Test Sample:

db<>fiddle

Gen Wan
  • 1,979
  • 2
  • 12
  • 19