2016-04-27 31 views
0

我的表有像 enter image description here查找列名的运行计数在Sybase

不,我需要计算的列值的运行计数在其他列像 enter image description here

我不是列能够得到它,尝试count(column_name),但它给了我一个列的长度。任何想法如何在Sybase(ASE)中做到这一点?

+0

你能告诉我们为你的'Device_name'表生成输出的查询吗? –

+0

它简单的像, 选择 列1, 列2, 设备名称, Column4 FROM DBO.TABLE_NAME –

+0

你只想要DEVICE_NAME旁的行号?或者你想要点数? – scaisEdge

回答

0

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”,否则无法保证获得结果的顺序。