在 sybase 中查找列名的 运行 计数

Find a running count of a column name in sybase

我的 table 有一列像

不,我需要计算其他列中列值的 运行 计数,例如

我无法获取它,尝试了 count(column_name) 但它给了我一列的长度。知道如何在 Sybase (ASE) 中做到这一点吗??

Tim Biegeleisen 暗示了这个问题 - 确定设备的排序顺序。

如果您不关心返回行的顺序,您可以使用:

SELECT     a.Device_name,
           ( SELECT count(*) FROM Devices 
             WHERE Device_name <= a.Device_name) AS "Running Count"
FROM       Devices a 
ORDER BY   Device_name

这给出:

Device_name          Running Count
-------------------- -------------
Android                          1
Apple                            2
Blackberry                       3
Unix                             4
Windows                          5

如果您有一列(例如 "ID")确定设备的顺序,那么您可以使用如下代码:

SELECT     a.Device_name,
           ( SELECT count(*) FROM Devices 
             WHERE ID <= a.ID) AS "Running Count"
FROM       Devices a 
ORDER BY   Device_name

按原始顺序给我们 运行 计数:

Device_name          Running Count
-------------------- -------------
Apple                            1
Blackberry                       2
Windows                          3
Android                          4
Unix                             5

当然,除非您使用 "order by".

,否则无法保证您获得结果的顺序