2016-12-13 5 views
0

Я пытаюсь получить результаты таблицы, упорядоченной разными значениями в столбце, но я хочу показать их в одной строке ... Например, моя таблица выглядит так.Интеграция столбцов за реестр

PR_ID      SOLUTION DESCRIPTION          
------------------------- ---------- -------------------------------------------------- 
A1         1 Description 1          
A2         2 Description 2          
A3         3 Description 1          
A4         1 Description 3          
B1         1 Description 1          
B2         2 Description 2          
C1         3 Description 1          
C2         2 Description 2          

8 rows selected 

И я хочу, чтобы результаты, чтобы показать что-то вроде этого:

DESCRIPTION      SOL_Up SOL_Down SOL_No_Valid 
------------------------------ -------- ---------- ------------- 
Description 1       2   0    3 
Description 2       0   3    0 
Description 3       1   0    0 

У меня есть дела работает, но когда я пытался поставить их в той же строке, что посылает мне аннулирует, что я не помните нули для 0, но мне нужны они в одной строке.

select 
description, Sol_Up, Sol_Down, Sol_No_Valid, count(1) 
from 
(
select description, 
case when Solution = 1 then 'Up' end Sol_Up, 
case when Solution = 2 then 'Down' end Sol_Down, 
case when Solution <= 0 or Solution >= 3 then 'No_Valid' end Sol_No_Valid 
from PRUEBAS_SOL 
) 
group by 
description, Sol_Up, Sol_Down, Sol_No_Valid 
order by Description; 

Но результаты не очень далеки от того, что мне нужно ...

DESCRIPTION          SO SOL_ SOL_NO_V COUNT(1) 
-------------------------------------------------- -- ---- -------- ---------- 
Description 1          Up      2 
Description 1            No_Valid   2 
Description 2           Down     3 
Description 3          Up      1 

ответ

1
select  description 

      ,count (case when Solution = 1   then 1 end) Sol_Up 
      ,count (case when Solution = 2   then 1 end) Sol_Down 
      ,count (case when Solution not in (1,2) then 1 end) Sol_No_Valid 

from  PRUEBAS_SOL 

group by description 

order by Description 
; 
+0

Спасибо! Я не знал, что вы можете использовать счет (случай) ... Есть ли какая-нибудь книга или страница, которую вы могли бы порекомендовать? – Zombraz

+1

Это очень старый трюк. Идея заключается в создании выражения, которое возвращает значения для данных, которые вас интересуют, и NULL для данных, которые этого не делают. Функции агрегации игнорируют NULL. –