2015-10-26 2 views
0

Как я могу группировать ряд строк в заданные столбцы на основе критериев группировки?Показывать сгруппированные строки в столбцах

Например,

ID  Type   Total  
============================== 
36197 Deduction   -9 
36200 Deduction   -1 
36337 Deduction   1 
36363 Deduction   0 
36364 Deduction   0 
36200 Safety   -1 
36342 Safety    0 
36350 Safety   10 
36363 Safety    0 
36364 Safety    1 

В

ID  Deduction  Safety 
========================================== 
36197 -9    0 
36200 -1    -1 
36337  1    0 
36363  0    0 
36364  0    1 
36342  0    0 
36350  0    10 

ответ

5

Вы можете использовать операторы регистра условно агрегатный:

select  id, 
      sum(case when type = 'Deduction' then total else 0 end) as deduction, 
      sum(case when type = 'Safety' then total else 0 end) as safety 
from  tbl 
group by id 
0
SELECT DISTINCT ID, (SELECT TOTAL FROM TABLE AS A WHERE A.ID = X.ID AND A.TYPE = 'DEDUCTION') AS DEDUCTION,(SELECT TOTAL FROM TABLE AS B WHERE B.ID = X.ID AND B.TYPE = 'SAFETY') AS SAFETY 
FROM TABLE AS X; 
0

Вы также можете решить с помощью шарнира.

select * from tableA 
pivot (
max(total) for type in (Deduction, Safety) 
) as pvt