我们可以在SQL中以GROUP BY条件连接两列吗?

时间:2016-08-23 07:12:16

标签: sql

我想知道我们是否可能有下面的内容:

 SELECT Variable1, Variable2, ...
 FROM MyDB.MyTable
 GROUP BY ( CONCATENATE (  Variable1 AND Variable2 ) )

获得如下结果:

 Variable1, Variable2, Variable1 and Variable2

2 个答案:

答案 0 :(得分:1)

您只需按Variable1, Variable2分组即可获得所需的结果,但您需要选择要进行连接的列。所以这会奏效:

SELECT Variable1, Variable2, concat(Variable1 , Variable2), AggregatedColumn
FROM MyDB.MyTable
GROUP BY Variable1, Variable2 

......假设Variable1Variable2当然是列名。

一般规则是,您需要拥有每个成分的最小构建块,但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期待Variable2group by

另外,您也可以使用Variable1 + Variable2代替concat(Variable1 , Variable2)

编辑:根据@jarlh的评论,GROUP BY concat(Variable1 , Variable2)无效ANSI-SQL,不应该使用它,我也看到了原因。如果Varaible1Variable2ashwin,则会将其分组到同一组中,就好像它们是ashwin或{{ 1}}和ashwi尽管很可能,这些应该是不同的组。

答案 1 :(得分:1)

<a id="MainContent_rptPager_lnkPage_2" class="aspNetDisabled">...</a>

在SQL中,您只能选择属于GROUP BY子句的列,或者在任何其他列上选择聚合函数。

Read More