所以我有一个表,里面有一堆信息和一堆记录。但有一个字段是我特别关心的,在本例中是#BegAttField#,其中只有一部分记录填充了它。它们中的许多也具有相同的价值。
我需要做的是获得所有重复项的计数(减1),然后在新字段中用该计数值填充簇中的第一条记录。我还有另一个名为BegProd的字段,它将为每个“第一条”记录匹配#BegAttField#。
我只是被困在如何实现这一点上。我可能走在正确的道路上,但谁知道呢。SELECT语句为我提供了两个字段和与其唯一的#BegAttField#一样多的记录,但是一旦有了它们,我就不能使用它们了。
下面是我的一整套代码,尝试使用一个临时表并选择INTO来填充它。(注意:名称周围带有#的字段是此第三方应用程序的变量)
CREATE TABLE #temp (AttCount int, BegProd varchar(255))
SELECT COUNT(d.[#BegAttField#])-1 AS AttCount, d.[#BegAttField#] AS BegProd
INTO [#temp] FROM [Document] d
WHERE d.[#BegAttField#] IS NOT NULL GROUP BY [#BegAttField#]
UPDATE [Document] d SET d.[#NumAttach#] =
SELECT t.[AttCount] FROM [#temp] t INNER JOIN [Document] d1
WHERE t.[BegProd] = d1.[#BegAttField#]
DROP TABLE #temp
不幸的是,我是通过使用SQL作为后端的第三方数据库应用程序来运行这个脚本的。因此,我得到的错误很简单:“数据库中已经有一个名为'#temp‘的对象。关键字'WHERE’附近的语法不正确。”
发布于 2012-01-26 23:04:51
注释掉CREATE TABLE语句。SELECT INTO创建#temp表。
https://stackoverflow.com/questions/9026762
复制