SQL Server,如何获取多个不同的项目

标签 sql sql-server sql-server-2008

我正在使用 SQL 服务器,

  id          3     | 4    | 5 | 6
  items       1 2 3 | 2 3 5| 6 | 1 2 5
    -------------------------
  # of items      3 | 4    | 5 | 5

所以,每个 id 都有项目(例如,3 有 3 个项目 - 1,2,3) 对于每个项目,我想获取累积的不同项目的数量。

所以,3 有 3 个不同的项目 - 1, 2, 3
4 有 4 个不同的项目 - 1、2、3、5
5 有 5 个不同的项目 - 1、2、3、5、6
6 有 5 个不同的项目 - 1, 2, 3, 5, 6

我可以通过执行 count(distinct items) 来运行 1 到 2、1 到 3、1 到 5 和 1 到 6 来做到这一点 但我想自动化这一过程并在一次运行中获得相同的结果。

这个想法是创建一个临时表并在其中放入一个项目,同时检查该项目是否已在临时表中并打印每个 id 的不同项目的数量。

最佳答案

CREATE TABLE TEST
(
    id int, items int
)

INSERT INTO TEST
VALUES
(3, 1),
(3, 2),
(3, 3),
(4, 2),
(4, 3),
(4, 5),
(5, 6),
(6, 1),
(6, 2),
(6, 5)

SELECT B.id, COUNT(DISTINCT(A.ITEMS)) AS itemCount
FROM TEST A
INNER JOIN TEST B ON A.id <= B.id
GROUP BY B.ID

DROP TABLE TEST

Output: 
id  itemCount
3   3
4   4
5   5
6   5

关于SQL Server,如何获取多个不同的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40083845/

相关文章:

sql - AWS 雅典娜 : Convert a comma delimited string into rows

SQL 'case when' 对比 'where' 效率

sql - 将 nvarchar 值 'CIS100 ' 转换为数据类型 int 时转换失败

sql-server - 重载解析失败,因为在没有缩小转换的情况下无法调用可访问的 'new'

c# - 在 C# 中评估 sql 语句的最佳方法是什么?

java - 不使用聚合函数删除sql中的重复项

sql - 排除 WHERE 子句中的空白值和空值

sql - 为高交易响应全文索引是一个好主意吗?

sql-server-2008 - MS SQL Server - 将结果导出到没有 "NULL"的文件

SQL 比较每小时总订单并删除当前库存可能吗?