Méthode standard pour la fonction IF () de MySQL

J'ai trouvé la fonction IF () de MySQL très utile pour me donner un moyen efficace d'effectuer des fonctions agrégées conditionnelles, comme ceci:

SELECT SUM(IF(`something`='a', `something_weight`, 0)) AS `A`, SUM(`something_weight`) AS `All` FROM... 

Je comprends que cette fonction est une caractéristique de MySQL, et n'est généralement pas disponible dans les bases de données qui utilisent SQL.

Existe-t-il une méthode plus standard pour réaliser cette fonctionnalité du côté de la database?

Dans MSSQL, vous pouvez faire ceci:

 SELECT SUM(CASE something WHEN 'a' THEN something_weight ELSE 0 END) as [a], SUM(something_weight) as [All] FROM ... 

Je ne suis pas un gourou sql mais une déclaration de cas

http://dev.mysql.com/doc/refman/5.0/fr/case-statement.html

pourrait être standard ansi.

Je crois que l'utilisation d'une déclaration CASE serait plus standard.

 SELECT SUM(CASE `something` WHEN 'a' THEN `something_weight` ELSE 0 END) AS `A`, SUM(`something_weight`) AS `All` FROM... 

CASE est la command générale que vous pouvez utiliser pour effectuer des fonctions d'agrégat conditionnelles. Pour plus d'informations, voir http://www.1keydata.com/sql/sql-case.html

regardez en utilisant CASE: CASE (Transact-SQL)

SELECT SUM (CAS QUAND quelque chose = 'a' ALORS XXX QUAND quelque chose = 'b' ALORS YYY ELSE 0 END) AS ColumnName