either do like this if city names are certain:-CREATE TABLE #t( customer_id int,city varchar(20),visit_value int)INSERT INTO #t VALUES (1,'Tokyo',2)INSERT INTO #t VALUES (1, 'Seoul', 1)INSERT INTO #t VALUES (1, 'Newyork', 2) INSERT INTO #t VALUES (2, 'Chicago', 1)SELECT customer_id,SUM(CASE WHEN city='Newyork' THEN visit_value ELSE 0 END) AS 'Newyork',SUM(CASE WHEN city='Seoul' THEN visit_value ELSE 0 END) AS 'Seoul',SUM(CASE WHEN city='Chicago' THEN visit_value ELSE 0 END) AS 'Chicago',SUM(CASE WHEN city='Tokyo' THEN visit_value ELSE 0 END) AS 'Tokyo'FROM #t GROUP BY customer_id
else apply PIVOT after builting the string of city names and buidling a sql string as @Sql='Selectconsumer_ID, (select cities from reasion a join contry b on a.region_id = b.region_id where region_cd = 99 )FROM(SELECT SELECT Consumer_ID , Visit_value,city_testFROM person p INNER JOIN Inventory I on p.inventory_id = I.inventory_id)WHERE (Visits_ID = 4) ) p PIVOT( count(visit_Value) For city IN ('+ @CityList + ')) pvt'Where @CityList='Tokyo','Seoul',....