我有下面的代码,可以计算行的总和,但是现在我想隐藏行,如果行的总和为零,怎么办?
SELECT * ,
Client.client_chi_name,
Client.client_eng_name,
SUM( shares_no ) AS sub_shares,
(select sum(shares_no) FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628') as total_shares
FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628'
GROUP BY Shareholder.client_id
ORDER BY sub_shares DESC,
Shareholder.date_of_register DESC
非常感谢你的帮助和帮助。提前支持!
答案 0 :(得分:0)
只需使用HAVING
clause
假设您必须过滤掉零的total_shares
:
.
.
GROUP BY Shareholder.client_id
HAVING total_shares > 0
ORDER BY sub_shares DESC,
.
.
答案 1 :(得分:0)
如果可以使用'有'你应该使用它。这是更好的方式
。 。 通过...分组 ... 拥有total_shares> 0 。
但是既然你问这么简单的问题,我认为你在SQL方面不是很强大。所以,你总是可以使用' where'条款。它会慢下来然后拥有并且它不是一个好的方法,但它肯定会起作用
select * from
(SELECT * ,
Client.client_chi_name,
Client.client_eng_name,
SUM( shares_no ) AS sub_shares,
(select sum(shares_no) FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628') as total_shares
FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628'
GROUP BY Shareholder.client_id
ORDER BY sub_shares DESC,
Shareholder.date_of_register DESC
)
where shares_no >0