我想知道我们是否可能有下面的内容:
SELECT Variable1, Variable2, ...
FROM MyDB.MyTable
GROUP BY ( CONCATENATE ( Variable1 AND Variable2 ) )
获得如下结果:
Variable1, Variable2, Variable1 and Variable2
答案 0 :(得分:1)
您只需按Variable1, Variable2
分组即可获得所需的结果,但您需要选择要进行连接的列。所以这会奏效:
SELECT Variable1, Variable2, concat(Variable1 , Variable2), AggregatedColumn
FROM MyDB.MyTable
GROUP BY Variable1, Variable2
......假设Variable1
和Variable2
当然是列名。
一般规则是,您需要拥有每个成分的最小构建块,但group by
中的汇总函数中包含的构成块除外。所以......
SELECT concat(Variable1 , Variable2), AggregatedColumn
FROM MyDB.MyTable
GROUP BY concat(Variable1 , Variable2)
...也可以工作,因为您只需要将连接值作为输出中的非聚合列,但是....
SELECT Variable1, Variable2, concat(Variable1 , Variable2), AggregatedColumn
FROM MyDB.MyTable
GROUP BY concat(Variable1 , Variable2)
不会,因为Variable1
期待Variable2
和group by
。
另外,您也可以使用Variable1 + Variable2
代替concat(Variable1 , Variable2)
。
编辑:根据@jarlh的评论,GROUP BY concat(Variable1 , Variable2)
无效ANSI-SQL,不应该使用它,我也看到了原因。如果Varaible1
和Variable2
为ash
和win
,则会将其分组到同一组中,就好像它们是as
和hwin
或{{ 1}}和ashwi
尽管很可能,这些应该是不同的组。
答案 1 :(得分:1)
<a id="MainContent_rptPager_lnkPage_2" class="aspNetDisabled">...</a>
在SQL中,您只能选择属于GROUP BY子句的列,或者在任何其他列上选择聚合函数。