我试图写一个脚本,它将返回每家公司的chk_amount总数和总计。我遇到的问题是,如果支票无效,则将其作为信用额返还,如果不按原样返还。 chk_amount中的所有值都是正数。
我在选择列表中收到void无效的错误,因为它不包含在聚合函数或GROUP BY子句中。有什么建议?我想要的输出是company_name和amount。
这是代码;
SELECT company_name = CASE GROUPING(company_name) WHEN 1 THEN 'Total' ELSE company_name END,
CASE WHEN void = 'Y'
THEN FORMAT(sum(chk_amount * (-1)), 'C', 'en-us')
ELSE FORMAT(sum(chk_amount), 'C', 'en-us')
END AS amount
from payments
INNER JOIN company_list on payments.company_no = company_list.company_id
where CONVERT( varchar(10),date_last_modified,101) = '1/13/2016'
Group by ROLLUP(company_name)
提前谢谢!
答案 0 :(得分:1)
您需要以这种方式向群组添加空白 - >由ROLLUP分组(company_name,void)
答案 1 :(得分:0)
SELECT CASE GROUPING(company_name) WHEN 1 THEN 'Total' ELSE company_name END As Company_Name
, FORMAT(SUM(chk_amount * CASE WHEN void = 'Y' THEN -1 ELSE 1 END), 'C', 'en-us') As amount
FROM payments
INNER JOIN company_list on payments.company_no = company_list.company_id
WHERE CAST(date_last_modified As Date) = '2016-01-13'
GROUP BY ROLLUP(company_name)