仅在满足条件时使用group by

csbfibhn  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(204)

我有一张包含物品的table和一个挑选名单。有时我需要将选择列表分组,以将要选择的项目汇总为一次(例如a(3x)),有时我需要显示未分组的项目(a(1x)、a(1x)、a(1x))
根据picklist的类型,我想显示分组或ongroup的结果。
如果我能在小组赛中使用一个条件那就太好了
输出未分组

ID| EAN            | article | amount
1 | 01234567890123 | A       | 1
2 | 01234567890123 | A       | 2
3 | 01234567890123 | A       | 4
4 | 98695959292929 | B       | 1
5 | 95956562629262 | C       | 5

输出分组

ID| EAN            | article | amount
1 | 01234567890123 | A       | 7
4 | 98695959292929 | B       | 1
5 | 95956562629262 | C       | 5

 SELECT article, ean, type FROM articles 
 GROUP BY articles.ean HAVING type = "grouped" <-- This is just for explainig. It's not a real selection

我不是这样工作的,但我认为这有助于理解我的目标。
根据“type”列的值,我想输出分组或非分组的数据。
我该如何存档?

l0oc07j2

l0oc07j21#

不确定你的 type 是列或某种绑定变量,但其工作方式如下:

SELECT ean, article, SUM(amount) AS amount
FROM articles 
GROUP BY ean, article,
         CASE WHEN :type <> 'grouped' THEN id END;

如果 type 不是 'grouped' ,然后 id 用作分组的附加列,因此不会将任何行分组在一起。
参见sqlfiddle示例。

相关问题