繁体   English   中英

在一个字符串中连接 2 列,然后为每个连接获取一个计数

[英]Concat 2 columns in a string, then get a count for each concatenation

我正在尝试连接 2 列,然后计算行数,即合并列字符串存在的总次数,但我不知道是否可能。 例如:

SELECT 
    CONCAT(column_1,':',column_2 ) as merged_columns, 
    COUNT(merged_columns) 
FROM 
    table 
GROUP BY 1
ORDER BY merged_columns DESC

注意:我作为字符串的一部分插入的冒号,所以我的结果类似于 12:3。 然后“计数”应该告诉我 column_1 =12 和 column_2 = 3 处存在的行数。

显然,它告诉我“merged_columns”不是列,因为它只是我的 CONCAT 的别名。 但这是可能的吗?如果可能的话,怎么办?

我知道的老问题,但以下应该在没有临时表的情况下工作(除非我遗漏了一些东西):

SELECT 
    CONCAT(column_1,':',column_2 ) as merged_columns, 
    COUNT(CONCAT(column_1,':',column_2 )) 
FROM 
    table 
GROUP BY 1
ORDER BY merged_columns DESC

您可以尝试从您的串联选择创建一个临时表,然后查询:

SELECT CONCAT(column_1,':',column_2 ) AS mergedColumns
INTO #temp
FROM table 

SELECT COUNT(1) AS NumberOfRows,
   mergedColumns
FROM #temp
GROUP BY mergedColumns

希望这个答案是您正在寻找的。

尝试这个

SELECT 
    CONCAT(column_1,column_2 ) as merged_columns, 
    COUNT(*) 
FROM 
    table 
GROUP BY merged_columns
ORDER BY merged_columns DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM