派生表 't' 不可更新,因为派生表中的某一列是派生的或是常量。

海蓝树 2011-04-28 08:54:57
update t set homecode =substring(homecode,2,4) from (select homecode from dbo.Archives_CM where homecode in (select homecode from dbo.Archives_CM group by homecode having len(homecode)>4)) as t


如果要实现对于group by后的更新如何处理
...全文
443 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-04-28
  • 打赏
  • 举报
回复
GROUP BY后面的查询放入临时表 然后再处理

2005以上可以放入CTE再处理
renwenli07461 2011-04-28
  • 打赏
  • 举报
回复
update t set homecode =substring(homecode,2,4) from (select homecode from dbo.Archives_CM where homecode in (select homecode from dbo.Archives_CM group by homecode having len(homecode)>4) as A) as t

rucypli 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwwwgou 的回复:]
SQL code
UPDATE dbo.Archives_CM
SET homecode = SUBSTRING(homecode, 2, 4)
WHERE LEN(homecode) > 4
[/Quote]1
快溜 2011-04-28
  • 打赏
  • 举报
回复

--直接查,何必要update,
select substring(homecode,2,4) as homecode
from dbo.Archives_CM
where homecode in (select homecode from dbo.Archives_CM group by homecode having len(homecode)>4)
--或者
select homecode into #tb
from dbo.Archives_CM
where homecode in (select homecode from dbo.Archives_CM group by homecode having len(homecode)>4)


update t set homecode =substring(homecode,2,4)
from #tb t
cs_lb 2011-04-28
  • 打赏
  • 举报
回复
不知道你想做什么?

如果想更新则

UPDATE dbo.Archives_CM
SET homecode = SUBSTRING(homecode, 2, 4)
WHERE LEN(homecode) > 4


如果是想查询则

SELECT SUBSTRING(homecode, 2, 4) AS homecode
FROM dbo.Archives_CM
WHERE LEN(homecode) > 4
Shawn 2011-04-28
  • 打赏
  • 举报
回复
或用CTE来更新.
CREATE TABLE #Archives_CM(homecode VARCHAR(10))
INSERT #Archives_CM
SELECT '1234' UNION ALL
SELECT '12345' UNION ALL
SELECT '123456' UNION ALL
SELECT '123456'
GO
--SQL:
;WITH cte AS
(
SELECT homecode
FROM #Archives_CM
WHERE homecode IN ( SELECT homecode
FROM #Archives_CM
GROUP BY homecode
HAVING LEN(homecode) > 4 )
)
UPDATE t
SET homecode = SUBSTRING(homecode, 2, 4)
FROM cte t
GO
--RESULT
SELECT * FROM #Archives_CM
/*
1234
2345
2345
2345
*/
Shawn 2011-04-28
  • 打赏
  • 举报
回复
UPDATE dbo.Archives_CM
SET homecode = SUBSTRING(homecode, 2, 4)
WHERE LEN(homecode) > 4
叶子 2011-04-28
  • 打赏
  • 举报
回复
把group by 后的数据放到临时表,然后更新临时表。
在当今数字化时代,企业财务管理正经历着一场革命性的变革。"智慧账务报账服务平台解决方案ppt.zip"便是这一变革的先锋代,它不仅仅是一个文档或PPT,而是一套完整的、智能化的企业财务解决方案。该平台利用最新的云计算技术、大数据分析、人工智能以及机器学习算法,为企业提供了一个高效、精准、便捷的报账和财务管理体系。这套解决方案专为满足现代企业复杂多变的财务需求而设计,其核心在于自动化和智能化。通过自动识别票据信息、智能审核报账单据、实时监控财务流程等功能,极大地减少了人工操作,降低了错误率,提高了工作效率。同时,平台的数据分析功能能够为企业提供深入的财务洞察,帮助企业制定更为科学的财务决策。此外,该解决方案还具备强大的可扩展性和安全性,能够适应不同规模和类型的企业需求,确保财务数据的安全和隐私。无论是在招投标过程中展示企业的创新能力,还是在日常运营中提升财务管理水平,"智慧账务报账服务平台解决方案ppt.zip"都是企业数字化转型不可或缺的伙伴。综上所述,这个解决方案不仅仅是一个智慧财务的工具,更是企业向数字化管理转型的桥梁,它能够帮助企业实现财务管理的现代化,提升竞争力,迎接未来挑战

22,199

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧