2014-06-05 3 views
-1

У меня есть таблица, как следовать ОПЕРАЦИИSQL ROW TO COLUMN

OPERATOR-OPERATION TYPE 
Ahmet DELETE 
Ahmet UPDATE 
Ahmet READ 
Salih DELETE 
Salih UPDATE 
Salih READ 
Salih READ 
Salih CREATE 

Что SQL будет получить следующий результат? Когда в простых предложениях COUNT, GROUP BY используются типы операций, написанных как основанные на ROW.

Name- Total- DELETE- READ- UPDATE CREATE 
Ahmet 3  1  1  1  0 
Salih 5  1  2  1  1 
+2

Это зависит от РСУБД. Не могли бы вы пометить свой вопрос этим? Это называется операцией PIVOT - на SO имеется немало вопросов относительно SO. – Ben

ответ

1
select operator, 
     count(*) as total, 
     sum(case when operation_type = 'DELETE' then 1 else 0 end) as deletes, 
     sum(case when operation_type = 'UPDATE' then 1 else 0 end) as updates, 
     sum(case when operation_type = 'READ' then 1 else 0 end) as reads, 
     sum(case when operation_type = 'CREATE' then 1 else 0 end) as creates 
from operations 
group by operator 
+0

Это может быть не самый лучший способ, если OP находится в базе данных, которая поддерживает PIVOT ... вам не хватает всего, и вы не использовали этот тип операции правильно ... – Ben

+0

есть способ автоматизировать добавление оператора введите данные из таблицы OPERATION_TYPES. –

+0

@ mmc18 Взгляните на это http://stackoverflow.com/a/24057529/2118383 –