2016-01-08 3 views
-2

У меня есть таблица вроде этого.Подсчитайте разницу в результате SQL

+-------------+-------+ 
| vtype | isreq | 
+-------------+-------+ 
| Near  |  0 | 
| Near  |  1 | 
| Far   |  0 | 
| Near to far |  0 | 
+-------------+-------+ 

Я хотел бы получить число, которое имеет различный isreq, но один и тот же тип. Кто-нибудь, пожалуйста?

+0

Вы имеете в виду, что вам нужен только счет, который удовлетворяет вашему состоянию? – Utsav

+0

Если тип тот же, и у него есть другой isreq, это будет счет 1. –

+0

Для данного примера покажите свой ожидаемый результат. – Utsav

ответ

0

Это будет работать для вашего требования. Попробуйте проверить, есть ли больше данных.

select count(*) from 
    yourTable a 
     inner join 
    yourTable b 
on a.vtype=b.vtype 
and a.isreq < b.isreq 
group by a.vtype,a.isreq 

Смотрите скрипку демо здесь на MySQL

http://sqlfiddle.com/#!9/b51bf8/11

+0

спасибо Utsav –

+0

Если это сработает для вас, пожалуйста, примите ответ, нажав на символ «tick» слева от ответа, чтобы он мог быть закрыт. – Utsav

0

я получил то, что мне было нужно.

DECLARE @table as table(vtype varchar(15),isreq varchar(5)) 

insert into @table values ('Near','0') 
insert into @table values ('Near','1') 
insert into @table values ('Far','0') 
insert into @table values ('Near to Far','0') 

SELECT count(*) FROM @table WHERE vtype = vtype and isreq = isreq 
SELECT DISTINCT(COUNT(*)-1) AS result FROM @table WHERE vtype = vtype and isreq = isreq GROUP BY vtype HAVING (COUNT(*)-1)>0 
+0

Это хорошо !!!! – Utsav

Смежные вопросы