используя count в подзапросе и получая ошибки - PullRequest
3 голосов
/ 07 декабря 2010

У меня есть построчно данные в таблице, и мне нужно, чтобы исключить списки с продаж и создать группировку отчетов по идентификатору схемы. Т.е. мне нужно найти все продажи и вычесть все возможные убытки, чтобы получить чистый объем продаж.

Я пытаюсь использовать запрос ниже, но я получаю ошибки.

select insscheme, ((select count(quote_id) where (sale = '1')) - (select count(quote_id) where cancellation = '1')) as sales from policys group by insscheme order by insscheme

и я получаю ошибку

Column 'policys.Sale' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Здесь вам не нужны никакие подзапросы.Просто используйте COUNT и CASE.

SELECT   insscheme,
         COUNT(CASE WHEN sale = '1' AND cancellation <> '1' THEN 1 END) AS sales
FROM     policys
GROUP BY insscheme
ORDER BY insscheme

Я предполагал выше, что cancellation не может быть обнуляемымЕсли это использовать

COUNT(CASE WHEN sale = '1' THEN 1 END) -  
COUNT(CASE WHEN cancellation = '1' THEN 1 END) AS sales 
0 голосов
/ 07 декабря 2010

Возможно, это может сработать.

select  insscheme, SUM(sale) - SUM(cancellation) as NetSales
from    policys
group by insscheme

Я не вижу, что столбец quote_id имеет отношение к вашему запросу. Вы запрашиваете один стол или несколько? Было бы полезно, если бы вы могли показать нам, как выглядит ваша схема, с кратким обсуждением вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...