2013-11-12 3 views
0

Мой образец файла, как показано ниже (четыре колонки):функция СЧЕТЕСЛИ в SQL

ID Balance1 Balance2 Balance3 
xx -1  -1  0 
yy -1  0  1 

Каждый клиент уникален. Я хочу, чтобы подсчитать количество отрицательных значений и положительных значений e.g.count отрицательных для xx является 2 и yy является 1 в то время как положительное значение (больше, чем 0) для xx является 0 и yy является 1.

Я могу использовать функцию COUNTIF в Excel, но как я могу использовать инструкцию SQL?

+0

Имея несколько столбцов, содержащих один и тот же «тип» данных, как правило, свидетельствует о сломанной модели данных. Похоже, что это должна быть таблица из 3 столбцов и 6 строк - столбцы - 'Id',' Balance' и все, что имя для * данных *, которые в настоящее время внедряются в ваши столбцы * имена * 1, 2 и 3 . –

+1

Какая СУБД вы используете? Postgres? Oracle? –

ответ

0

вы должны попробовать это:

Select ID 
    , Sum(Case When value < 0 Then 1 Else 0 End) As Negatives 
    , Sum(Case When value > 0 Then 1 Else 0 End) As Positive 
From sample_table 
Group By ID 
+0

При публикации кода вы должны выделить блок и нажать кнопку '{}' - он сохранит макет, как вы его написали, и позволяет маркеру выделять код. –

0
Try This 

select id, 
sum (case when balance1 >0 then 1 else 0 end) + 
sum (case when balance2 >0 then 1 else 0 end) + 
    sum (case when balance3 >0 then 1 else 0 end) 
    as positive, 

sum (case when balance1 <0 then 1 else 0 end) + 
sum (case when balance2 <0 then 1 else 0 end) + 
    sum (case when balance3 <0 then 1 else 0 end) as negative 
from tABLE 

group by id 
Смежные вопросы