通过存储过程更新SQL Server表以执行此操作
我需要根据选择的日期-时间升序和类型的列,使用自动生成的序列更新SQL Server列 以下是我脑海中的算法:通过存储过程更新SQL Server表以执行此操作,sql,sql-server,Sql,Sql Server,我需要根据选择的日期-时间升序和类型的列,使用自动生成的序列更新SQL Server列 以下是我脑海中的算法: 1. To update a column AppNo update column_of_interest from_above_table auto_increment value (1..n) where following datetime_col desc 2a. If Requesttype is AAA for a select where following
1. To update a column AppNo
update column_of_interest
from_above_table
auto_increment value (1..n)
where
following datetime_col desc
2a. If Requesttype is AAA for a select where
following datetime_col desc then there should be a different (1...n)
update
2b. If Requesttype is BBB for a select where
following datetime_col desc then there should be a different (1...n)
update
3. The AppNo should reset each day, for each Requestype too.
目前,我的兴趣列TAPPNO为空。
我想更新如下:
ProjectID AppNo ProcessedDate
--------- ----- ----------------
11 3 2019-09-30 18:21
3 1 2019-09-25 08:37
3 2 2019-09-25 08:37
11 1 2019-09-25 08:39
11 2 2019-09-25 08:40
7 1 2019-09-26 14:19
7 2 2019-09-26 14:20
7 3 2019-09-26 14:22
2 1 2019-09-26 14:23
11 1 2019-09-26 14:23
11 2 2019-09-26 14:24
11 3 2019-09-26 14:24
3 1 2019-09-26 14:24
我需要根据上述内容填写我感兴趣的专栏。问题不是很清楚,但我认为您正在寻找功能,例如: 选择 福, 酒吧 巴兹, 感兴趣的列=按日期时间列描述的订单上的行数 从桌子上方
这本身不是一个计算列,因为它不是表架构的一部分,但应该可以达到您想要的效果。每天早上,您都可以运行下面的查询,为每种请求类型每天使用正确的行数更新前一天的所有记录
;WITH CTE_TableToUpdate
(
SELECT ColumntoUpdate, DateOfUpdate, RequestType
Row_Number() OVER(PARTITION BY RequestType, DateOfUpdate ORDER BY DateOfUpdate) AS rn
FROM TableToUpdate
WHERE ColumnToUpdate IS NULL
AND DateOfUpdate < CAST(GETDATE() AS DATE)
)
UPDATE CTE_TableToUpdate
SET ColumnToUpdate = rn
您提到了计算列,但您的代码看起来像是在更新真实列。它还有几个词根本不是标准的SQL。您确定您的DBMS是Microsoft SQL Server吗?如果是这样的话,并且您已经在查询中添加了一些描述性文本,您是否可以插入注释行以便更清楚地了解您想要的内容?我说这是一种算法,而不是sql server本身。我的想法是以算法的形式表达的,而不是真正的sql server。问题是你的问题一点也不清楚。您应该做的是发布现有表的create语句。然后清楚地解释你想做什么。您似乎想添加一个新列?但是这个新专栏的价值是什么?我已经编辑了这个问题,我不知道它是否有意义now@PeterGodfreyObike我已将屏幕截图链接中的数据转录为文本,输入到您的问题中。请避免包含数据图像-这会使人们更难复制您的数据以帮助您回答问题。您已经接近我想要的了,但可能是因为问题没有很好地提出。请看编辑后的问题。感激当你说AppNo应该每天重置时,你是指墙上时钟时间中的每一天,还是表中其他日期或日期时间列中的每一天?墙上时钟时间中的每一天,对于每一个新的一天,AppNo应该从1…n开始,对于每个请求类型,它是AppNo的一种更新的链接非常感谢,虽然我还没有运行你的脚本。但对于每个条目,我希望列值几乎可以立即使用。它不起作用,我在更新之前检查了rn列,得到的所有行都是1,1,1。请我需要你再次检查你的答案