2015-03-18 9 views
-3

Это мой запрос.SQL-строки в столбце

select name, walk_to, count(*) count 
from walk 
where name='Rizwan' 
group by name, walk_t0; 

Это приводит данные, такие как:

NAME  WALK_TO  COUNT 
Rizwan Cafe  2 
Rizwan Arena  10 
Rizwan Outside  20 

Есть данные других пользователей, а также. Я хочу:

NAME  CAFE  ARENA  OUTSIDE 
Rizwan 2  10  20 
John  3  21  90 
James 5  5   9 

Любая идея, как написать запрос, чтобы получить этот результат?

+1

Это называется стержнем, а синтаксис варьируется в зависимости от типа базы данных. – OldProgrammer

+0

есть способы сделать это, которые независимы от db - я опубликую и пример ниже – Hogan

+0

@Hogan: OP помечен как вопрос SQL Server, поэтому независимый от поставщика пример не имеет значения. Плюс вопрос - это дубликат. Но не стесняйтесь тратить свое время. – stakx

ответ

0
SELECT  name, 
      SUM(CASE WHEN walk_to = 'Cafe' THEN 1 ELSE 0 END) Cafe, 
      SUM(CASE WHEN walk_to = 'Arena' THEN 1 ELSE 0 END) Arena, 
      SUM(CASE WHEN walk_to = 'Outside' THEN 1 ELSE 0 END) Outside 
FROM  walk 
GROUP BY name 

Это называется pivioting больше примеров смотрите здесь SQL Server: Examples of PIVOTing String data

+0

Зачем ставить один пример? Почему бы просто не объявить вопрос как дубликат того, с которым вы связались? – stakx

+0

Извините, я новичок в переполнении стека ... просто пытаюсь помочь. Как пометить его как дубликат? – legohead

+1

Безрезультатно. Re: Как пометить дублированный вопрос, который делается через закрытые голоса. Но у вас, вероятно, пока нет достаточных точек репутации. См. Страницы справки. – stakx

0
select name, 
     sum(case when walk_to='Cafe' then 1 else 0 end) as CAFE, 
     sum(case when walk_to='Arena' then 1 else 0 end) as ARENA, 
     sum(case when walk_to='Outside' then 1 else 0 end) as OUTSIDE 
FROM walk 
GROUP BY name 
+0

Это предполагает, что 'walk_to' имеет фиксированное число значений. – axblount

+0

@axblount - все, что у меня есть, является спецификацией OP для продолжения. Если я должен угадать дополнительные требования, я бы никогда не смог ответить на вопрос о SO. – Hogan