我一直在尝试查询来更新我当前的数据库,但我无法弄清楚如何做到这一点。我一直在尝试使用游标,但我找不到隔离每一行的方法,也没有将不同列的所有行设置为相同的值。
以下是我在数据库中的内容:
def f(g):
g['result'] = len(g)
return g
df.groupby([df.i, df.j]).apply(f)
我希望它成为:
RecoNumber Item
ABIBAQC-01 1
ABIBAQC-01 1
ABIBAQC-01 1
ABIBAQC-02 1
ABIBAQC-03 1
ABIBAQC-03 1
就像我说的那样,我已经尝试过使用光标,但我遗漏了一些让它正常工作的东西。
RecoNumber Item
ABIBAQC-01 1
ABIBAQC-01 2
ABIBAQC-01 3
ABIBAQC-02 1
ABIBAQC-03 1
ABIBAQC-03 2
提前感谢任何提示。
答案 0 :(得分:4)
您可以使用ROW_NUMBER()
功能:
;WITH cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY RecoNumber ORDER BY RecoNumber) AS UPD_Item
FROM YourTable
)
UPDATE cte
SET Item = UPD_Item
ROW_NUMBER()
函数为每一行分配一个数字。 PARTITION BY
是可选的,但用于为给定字段或字段组中的每个值开始编号,即:如果您PARTITION BY Some_Date
,那么对于每个唯一日期值,编号将从1开始。 ORDER BY
当然用于定义计数应该如何进行,并且在ROW_NUMBER()
函数中是必需的。
您可以SELECT * FROM cte
在运行UPDATE
之前先观察新值,您可能还有其他字段值ORDER BY
。