sql - 使用 SQL Server 2008 计算列中存在的组数

标签 sql sql-server sql-server-2008

我有一个表格,如下所示:

create table test
(
  cola varchar(10) 
)

插入一些数据:

insert into test values('a');
insert into test values('a');
insert into test values('a');
insert into test values('b');
insert into test values('b');
insert into test values('c');
insert into test values('d');
insert into test values('d');

我想显示cola列中有多少个组

预期结果:

TotalGroups   a    b    c    d 
--------------------------------
 4            3    2    1    2

最佳答案

试试这个,删除 [ 和 ] 以避免 SQL 注入(inject):

DECLARE @sql varchar(max) = 
       'SELECT (select count(distinct cola) from test) TotalGroups'

SELECT @sql += ',' +cast(count(*) as varchar(10)) + 
      '['+ replace(replace(cola, ']', ''), '[', '') + ']'
FROM TEST
GROUP BY cola
ORDER BY cola


EXEC(@sql)

结果:

Total_Groups  a  b  c  d
4             3  2  1  2

关于sql - 使用 SQL Server 2008 计算列中存在的组数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766700/

相关文章:

sql-server - 有人有 SQL Azure 数据库的备份策略吗?

mysql - 在 2 个表中选择匹配的字符串

mysql - 通过加入多个表来计算

c# - 从数据库中检索数据的最快方法

sql-server - 禁用 TLS1.0 和更早版本时,经典 ASP 站点无法连接到 SQL Server

sql - 如何对2个查询的输出执行算术运算

sql-server - 外部应用函数的性能

sql - 单击时如何从 Column(0) 中的列表框中引用值?

sql - 将列内包含 JSON 数组的行扩展到多行

sql-server - 在 MSSQL 触发器中使用 POST 方法