請問各位,為什麼在UPDATE語句中不能用查詢語句返回的值來更新字段值呢?? 要怎麼辦? 怎麼改?

laker_tmj 2006-02-28 05:35:39


請問各位,為什麼在UPDATE語句中不能用查詢語句返回的值來更新字段值呢?? 要怎麼辦? 怎麼改?

(我使用的@TOTALA為什麼返不回查詢語句所返回的值呢???)

@TOTALA=
(
CASE WHEN DB='MRP' THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) AS TT FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRP' AND IDS<=@IDS ),0)
WHEN DB='MRPM' THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) AS TT FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRPM' AND IDS<=@IDS ),0)
ELSE 0 END
)


使用的語句如下:


DECLARE @IDS INT
DECLARE @INX FLOAT
DECLARE @TOTALA INT
DECLARE @TOTALB INT
DECLARE @STRITEM NVARCHAR(50)
DECLARE @STRCHECKDATE NVARCHAR(50)
SELECT @IDS=0,@INX=0,@TOTALA=0,@TOTALB=0,@STRITEM='',@STRCHECKDATE=''

UPDATE #TEMP1 SET @IDS=IDS,@STRITEM=ITEM_CODE,@STRCHECKDATE=CONVERT(NVARCHAR(10),DATE_EXP,120),
@TOTALA=
(
CASE WHEN DB='MRP' THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) AS TT FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRP' AND IDS<=@IDS ),0)
WHEN DB='MRPM' THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) AS TT FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRPM' AND IDS<=@IDS ),0)
ELSE 0 END
),
TOTALA=ISNULL(@TOTALA,-1),
@TOTALB=
(
CASE WHEN DB='MRP' THEN (SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRPM' AND CONVERT(NVARCHAR(10),DATE_EXP,120)<=@STRCHECKDATE)
WHEN DB='MRPM' THEN (SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 A WHERE A.ITEM_CODE=@STRITEM AND DB='MRP' AND CONVERT(NVARCHAR(10),DATE_EXP,120)<=@STRCHECKDATE)
ELSE 0 END
),
TOTALB=ISNULL(@TOTALB,-1)
WHERE ITEM_CODE='700270307A0R'
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2006-02-28
  • 打赏
  • 举报
回复
既然不需要累加,没必要定义变量。
子陌红尘 2006-02-28
  • 打赏
  • 举报
回复
UPDATE #TEMP1
SET
TOTALA=(CASE WHEN DB='MRP'
THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 WHERE ITEM_CODE=a.ITEM_CODE AND DB='MRP' AND IDS<=a.IDS),0)
WHEN DB='MRPM'
THEN ISNULL((SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 WHERE ITEM_CODE=a.ITEM_CODE AND DB='MRPM' AND IDS<=a.IDS),0)
ELSE -1
END),
TOTALB=(CASE WHEN DB='MRP'
THEN (SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 WHERE ITEM_CODE=a.ITEM_CODE AND DB='MRPM' AND CONVERT(NVARCHAR(10),DATE_EXP,120)<=CONVERT(NVARCHAR(10),a.DATE_EXP,120))
WHEN DB='MRPM'
THEN (SELECT MAX(STOCK_QTYA)+SUM(NET_QTY+INX) FROM #TEMP1 WHERE ITEM_CODE=a.ITEM_CODE AND DB='MRP' AND CONVERT(NVARCHAR(10),DATE_EXP,120)<=CONVERT(NVARCHAR(10),a.DATE_EXP,120))
ELSE -1
END),
FROM
#TEMP1 a
WHERE
a.ITEM_CODE='700270307A0R'
内容概要:本文围绕“基于多目标粒子群算法的分布式电源选址定容规划”展开研究,利用Matlab实现算法仿真,旨在解决配电网分布式电源(如风电、光伏等)的最佳安装位置与容量配置问题。研究综合考虑系统网损最小、电压质量最优、投资成本合理等多个优化目标,采用多目标粒子群优化算法(MOPSO)进行求解,最终获得一组Pareto最优解集,为决策者提供科学的规划方案。文结合IEEE33节点等标准测试系统进行仿真分析,验证了所提方法在提升电网运行经济性、稳定性与供电质量方面的有效性与实用性;同时强调算法在处理多目标冲突、约束条件及工程可行解方面的优势。; 适合人群:具备电力系统基础理论知识、熟悉Matlab编程环境,从事新能源并网、配电网规划、智能优化算法研究的研究生、科研人员及电力系统相关领域的工程技术人员。; 使用场景及目标:①应用于分布式电源(如光伏、风电)在配电网的科学选址与容量配置;②解决多目标、多约束条件下能源系统的协同优化问题,提升电网运行效率与可靠性;③为科研项目、学位论文撰写或实际工程设计提供成熟的算法实现参考与仿真技术支持。; 阅读建议:建议结合Matlab代码动手实践,深入理解多目标粒子群算法的核心机制,重点关注目标函数构建、约束条件处理、Pareto前沿生成与解集评价方法,可进一步扩展至NSGA-II、MOEA/D等其他多目标智能算法进行性能对比分析,以深化对优化算法选型与参数调优的理解。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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