我在表格中有逐行数据,我需要扣除销售的取消并生成一个关于方案标识符的报告分组。即我需要找到所有销售额并减去所有取消产品以产生净销售额。
我正在尝试使用下面的查询,但我收到错误。
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.
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
此处不需要任何子查询。只需使用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
答案 1 :(得分:0)
也许这可行。
select insscheme, SUM(sale) - SUM(cancellation) as NetSales
from policys
group by insscheme
我没有看到quote_id列与您的查询有什么关系。你在查询一张桌子还是几张桌子?如果您可以通过对表格布局的简短讨论向我们展示您的模式,那将会有所帮助。