sql - 在 SQL 的单独列中获取计数

标签 sql sql-server

所以我目前有下表:

REF| STATUS
OP1|0
OP2|2
OP2|4
OP2|5
OP3|7
OP3|6

如您所见,OP2 有 3 个雕像,OP3 有 2 个状态。 我正在尝试归档以下内容:

REF| STATUS | COUNT
OP1|0       |1
OP2|2       |3
OP2|4       |3
OP2|5       |3
OP3|7       |2
OP3|6       |2

计数是每个引用的状态数。

我提供了一个 SQL 但不确定我哪里出了问题?

SELECT ref,STATUS, (SELECT COUNT(STATUS) FROM orders WHERE STATUS > 0 GROUP BY ref)
FROM orders

我正在使用 SQL Server 2008。

最佳答案

使用COUNT() OVER()

SELECT ref,STATUS, COUNT(*) OVER(PARTITION BY REF1)
FROM orders

要获取status > 0 的计数,可以将上面的查询更改为

SELECT ref,STATUS, COUNT(CASE WHEN STATUS>0 THEN 1 END) OVER(PARTITION BY REF1)
FROM orders

关于sql - 在 SQL 的单独列中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070819/

相关文章:

sql - 使用 Join 查询性能问题 (Postgresql)

mysql - SQL JOIN 同一个表上的两个不同列

c# - 如何从选择查询中计算重复记录

sql-server - SQL Server 登录前握手

sql-server - datetimeoffset 的夏令时支持 (SQL Server)

sql-server - IsNumeric 在 SQL Server 中不起作用

MySQL GROUP_CONCAT 返回重复值。无法使用 DISTINCT

sql-server - SQL Server 创建程序集

sql-server - 优点/缺点 - sql server 的加密文件系统 (EFS) 与透明数据加密 (TDE)

java - 两个 "like"查询组合并排序