我需要执行分组依据,但只能在满足条件的行上执行,否则返回不满足条件的所有行。例如,在下表中,我只希望对“活动”字段中具有“ 1”的行进行分组,并返回所有没有的行。
表格(ID,标签,有效):
1, A, 1 2, A, 1 3, B, 0 4, B, 0
将返回:
1, A, 1 3, B, 0 4, B, 0
这是我能想到的最简单的方法。这是group by中的一个案例。如果满足条件,则按标签分组,否则按主键分组。
SELECT id, label, active FROM table GROUP BY CASE WHEN active = 1 THEN active ELSE id END
如果要按活动分组并标记:
SELECT id, label, active FROM table GROUP BY CASE WHEN active = 1 THEN active ELSE id END, label
编辑:我误解了您要分组的字段。现在已更正。