我有一个包含文章和选项列表A的表格。有时我需要将选项列表组合起来总结要被选为一次的文章(例如文章A(3x)),在某些情况下我需要显示项目未分组(A条(1x),A条(1x),A条(1x))
根据选项列表的类型,我想显示分组或分组的结果。
现在,如果我可以在GROUP BY上使用条件
那就太好了OUTPUT未分组
ID| EAN | article | amount
1 | 01234567890123 | A | 1
2 | 01234567890123 | A | 2
3 | 01234567890123 | A | 4
4 | 98695959292929 | B | 1
5 | 95956562629262 | C | 5
OUTPUT分组
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
我不是这样做的,但我认为理解我的目标是有帮助的。
取决于列的值&#34;键入&#34;我想输出数据,分组或未分组。
我怎么能达到这个目的?
答案 0 :(得分:0)
不确定您的type
是列还是某种绑定变量,但它应该是这样的:
SELECT ean, article, SUM(amount) AS amount
FROM articles
GROUP BY ean, article,
CASE WHEN :type <> 'grouped' THEN id END;
如果type
不是'grouped'
,则id
将用作分组的附加列,因此不会将任何行组合在一起。
请参阅SQL Fidddle上的示例。