SQL 计算参数定义的唯一对象

标签 sql sql-server sql-server-2000

我有一张 table :

id | parameter
 1 | A
 1 | B
 2 | A
 3 | A
 3 | B

表示使用以下值定义的对象:

 1 -> A,B
 2 -> A
 3 -> A,B

我想使用 SQL 查询计算具有不同参数的对象的数量,因此在本例中,它将是 2 个唯一的对象,因为 1 和 3 具有相同的参数。

参数数量没有限制,可以是0,也可以是任何其他数量。

数据库是Microsoft SQL Server 2000。但我不介意了解其他数据库的解决方案。

最佳答案

如果我理解正确的话,您希望表中表示的每个 id参数的不同组合数量,可能包含数字展示每种不同组合的实体。

我不能代表 SQL Server,但在 MySQL 下你可以做这样的事情:

  SELECT parameter_set, COUNT(*) AS entity_count
    FROM (
          -- Here we "flatten" the different parameter combinations per id
             SELECT id,
                    GROUP_CONCAT(parameter ORDER BY parameter) AS parameter_set
               FROM tbl
           GROUP BY id
         ) d
GROUP BY parameter_set;

这会给你这个:

 parameter_set | entity_count
---------------+--------------
 A,B           |            2   -- two entities have params A, B
 A             |            1   -- one entity has param A

SELECT COUNT(DISTINCTparameter_set FROM (... flattening query ...)) d 将为您提供不同参数集的数量。

关于SQL 计算参数定义的唯一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026977/

相关文章:

java - 通过远程删除存储过程

sql-server - 可以更改 SQL Server 2000 View 中的列长度吗?

sql - 带有 IN 语句的 SQL 语句中的案例问题

sql - 如何在 presto 中将列转换为数组

mysql - SQL JOIN 在单列中返回两个表

sql-server - 从 UDF 访问 Sql Server CLR 文件系统

c# - 什么是 SQL Server CLR 集成生命周期?

sql - 复杂的 SQL 连接

MySQL - 根据一列中的重复项满足另一列中的要求进行选择

sql - 无法在 READ ONLY 游标上指定 FOR UPDATE