Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过存储过程更新SQL Server表以执行此操作_Sql_Sql Server - Fatal编程技术网

通过存储过程更新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

我需要根据选择的日期-时间升序和类型的列,使用自动生成的序列更新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 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。请我需要你再次检查你的答案