SQL IF条件,如果是GROUP BY语句

时间:2015-02-23 12:56:00

标签: sql

我对SQL中的IF条件有一些疑问 是否可以在SQL查询中使用下一个语法?关于if by group by statement

,我很有趣
"SELECT * FROM TABLE WHERE... IF(order_id !=0, GROUP BY order_id, GROUP BY other_field)"

3 个答案:

答案 0 :(得分:3)

SELECT * 
FROM TABLE 
GROUP BY case when order_id <> 0 
              then order_id
              else other_field
         end

答案 1 :(得分:1)

首先,您不应该select *group by一起做case。在大多数数据库中,(通常)查询将被拒绝并出现语法错误。

其次,SQL标准是select (case when order_id != 0 then order_id end) as order_id, (case when order_id = 0 then other_field end) as other_field, count(*) from table t group by (case when order_id != 0 then order_id end), (case when order_id = 0 then other_field end);

也许你想要这样的东西:

case

请注意,我将逻辑拆分为两个{{1}}语句。如果字段的类型不相同,这只会更容易 - 您不必处理如何从一种类型转换为另一种类型的事情。

答案 2 :(得分:0)

您可以使用CASE语句。像这样的东西 -

SELECT * 
FROM TABLE 
WHERE... 
GROUP BY CASE WHEN order_id !=0 THEN order_id 
ELSE other_field END;