在 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".
,否则无法保证您获得结果的顺序
我的 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".
,否则无法保证您获得结果的顺序