【发布时间】:2017-02-03 14:52:05
【问题描述】:
抱歉标题不好。我想不出更好的方式来描述我的问题。
我有下表:
Category | A | B
A | 1 | 2
A | 2 | 1
B | 3 | 4
B | 4 | 3
我想按Category 对数据进行分组,每个类别只返回1 行,但同时提供A 和B 列的值。
所以结果应该是这样的:
category | resultA | resultB
A | 1 | 2
B | 4 | 3
如何做到这一点?
我试过这个说法:
SELECT category, a, b
FROM table
GROUP BY category
但显然,我收到以下错误:
选择列表中的列“a”无效,因为它不包含在内 在聚合函数或 GROUP BY 子句中。
选择列表中的“b”列无效,因为它不包含在任何一个 聚合函数或 GROUP BY 子句。
我怎样才能达到预期的效果?
【问题讨论】:
-
你能解释一下你的预期输出吗?为什么保留 A = 1、4 而删除 2、3?您想为每个类别保留任何一行吗?
-
选择要显示的 a 和 b 中的哪些值的标准是什么?
-
如果有 3 行 A 类,这对 {5, 5} 会是什么结果?
-
“我想按类别对数据进行分组” - 你真的吗?每个类别一个结果行,不管是什么值?到目前为止,您只显示每个类别具有一个属性对的数据(A 为 1 和 2;B 为 3 和 4)。请按类别显示更多记录,并告诉我们这对预期结果有何影响。
标签: sql-server group-by aggregate