sql - 如何在 SQL 中将 3 列分组为一列

标签 sql sql-server stored-procedures

我有一个包含三列的表:myColumn、myColumn2 和 myColumn3。三列可以有不同的值,但它们都是相同的类型。

我需要进行联接,以便合并三列中的所有项目,然后进行分组

如果我有一个列,它会像这样完成:

select distinct (myColumn), COUNT(myColumn) as 'TotalF' 
from FormularioCorto 
where idEvento = @idEvento and myColumn <> ''
group by myColumn 

问题是: 如何执行允许我连接三列然后进行分组的 TSQL 语句?

编辑:这是示例数据 我有一个包含 3 列且类型相同的表格

columna columnb columnc
a              a       b
b              a       b
c              c       d

我需要运行一个 tsql 来合并 3 列并进行分组,以获得类似于

的结果
newcolumn   count
a             3
b             3
c             2
d             1

有什么想法吗?

提前致谢

最佳答案

如果没有一些示例数据和所需的输出,很难判断,但猜测如下:

SELECT MyCol as MyColumn, Count(*) as 'TotalF'
FROM 
(
  SELECT myColumn MyCol from FormularioCorto 
  WHERE idEvento = @idEvento AND myColumn <> ''
  UNION ALL
  SELECT myColumn2 MyCol from FormularioCorto 
  WHERE idEvento = @idEvento AND myColumn2 <> ''
  UNION ALL
  SELECT myColumn3 MyCol from FormularioCorto 
  WHERE idEvento = @idEvento) AND myColumn3 <> ''
) A
GROUP BY MyCol;

或者仅获取示例数据和结果:

SELECT NewColumn, Count(*) as Count FROM
(
  SELECT columna as NewColumn FROM SomeTable
  UNION ALL
  SELECT columnb as NewColumn FROM SomeTable
  UNION ALL
  SELECT columnc as NewColumn FROM SomeTable
) A
Group by NewColumn

关于sql - 如何在 SQL 中将 3 列分组为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8237285/

相关文章:

SQL通配符不返回数据?

sql - sql server中唯一主键和复合主键的区别

sql - Rails has_many 关联记录满足条件

sql - 将 Datetime 迁移到 DateTimeOffset

c# - 使用 Linq to SQL 类的 Kendo 分页,查询所有数据非常慢

sql-server - 在包含 varbinary(max) 数据的表中查询非 varbinary(max) 字段是否存在性能问题?

mysql - 在 MySQL 中使用联接从多个表中选择数据

sql - 替换存储在 SQL Server 数据库列中的 XML 中的节点名称

java - 服务器到客户端进行json通信的通用java类

stored-procedures - 带有存储过程调用的 BEFORE INSERT 触发器 (DB2 LUW 9.5)