我的表目前看起来像这样
ID NAMESITE SENSORTYPE ____(columns between) SENSORNUMBER(initialized to all null)
---------------------------------------------------------------
SW02 random null--
SW02 camera null--
SW02 random null
SW02 camera null
NW02 RANDOm null
NW02 camera null
NW02 random null
NW02 camera null
NW02 camera null
基本上我要做的是增加传感器编号,如果它与传感器类型='相机'接触,如果它与2个id相接触,它应该在同一行输入增量值传感器编号 但是,所有非相机的ID传感器类型都可以保留为空
示例输出应该是这样的
ID NAMESITE SENSORTYPE ____(columns between) SENSORNUMBER(initialized entire Column NULL)
-----------------------------------------------------------------------
SW02 random null--
SW02 camera 1
SW02 random null
SW02 camera 2
NW02 RANDOm null
NW02 camera 1
NW02 random null
NW02 camera 2
NW02 camera 3
我不确定我是如何用C#或没有C#来实现这一点的,我不确定如何处理这个问题,我想我需要保持运行计数任何帮助吗?
请注意我想修改我的EXISTING TABLE而不是创建一个新表(第一个是我初始表的样子)
其中SENSORTYPE ='Camera'如果多于一个相同的ID,则应递增。
答案 0 :(得分:1)
我认为您可以使用update
和CTE:
with toupdate as (
select t.*, row_number() over (partition by id order by id) as seqnum
from t
where sensortype = 'Camera'
)
update toupdate
set sensornumber = seqnum;
注意:每个id
的传感器编号都在增加。但是没有(明显的)列来排序值。如果您有这样的列,那么order by
应该使用该列。否则,这些值将是连续的,但是是任意排序的。
答案 1 :(得分:0)
为了获得从1开始的SENSOR数字的顺序实现(非ARBITRARLY)我刚刚创建了另一行rownum,它跟踪行#(1-endrow)并使用了它的顺序,所以它没有使用任意数字。 - 如果有人在想!