我发现MySQL's IF() function对于给我一个有效的方法来执行条件聚合函数非常有用,例如:
SELECT SUM(IF(`something`='a', `something_weight`, 0)) AS `A`, SUM(`something_weight`) AS `All` FROM...
据我了解,此功能是MySQL的一项功能,通常在使用SQL的数据库中不可用。
是否有更标准的方法在数据库方面实现此功能?
答案 0 :(得分:3)
答案 1 :(得分:2)
我相信使用CASE语句会更加标准。
SELECT SUM(CASE `something` WHEN 'a' THEN `something_weight` ELSE 0 END) AS `A`,
SUM(`something_weight`) AS `All`
FROM...
答案 2 :(得分:2)
CASE是可用于执行条件聚合函数的通用命令。有关详细信息,请参阅http://www.1keydata.com/sql/sql-case.html
答案 3 :(得分:1)
在MSSQL中,你可以这样做:
SELECT SUM(CASE something WHEN 'a' THEN something_weight ELSE 0 END) as [a],
SUM(something_weight) as [All]
FROM ...
答案 4 :(得分:1)
查看使用CASE:CASE (Transact-SQL)
SELECT SUM(CASE WHEN something ='a'那么XXX 什么东西='b'那么你 ELSE 0 结束 )AS ColumnName