开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 252|回复: 5
收起左侧

[完成] SQLcha询,长语句会死机问题

 关闭 [复制链接]
结帖率:100% (45/45)
发表于 2025-11-17 11:08:29 | 显示全部楼层 |阅读模式   上海市上海市
5精币
请忽略IP地址等敏感信息

长语句
cha询按下去,程序就自己退出了

  
如果真 (外部数据库1.打开SQL数据库 (“192.168.00.000”, “00”, “0000”, “0000”, , ))
返回 ()
超级列表框29.全部删除 ()
语句 = “WITH PriceComparison AS (SELECT TC.TC001 AS DBB, TC.TC002 AS DHH, TD.TD001 AS DBB2, TD.TD002 AS DHH2, TD.TD003 AS XHH, TD.TD004 AS PHH, TD.TD005 AS PMM, TD.TD006 AS GGG, TD.TD010 AS CGDJ, MB.MB011 AS SDCGDJ, MB.MB014 AS SXRQ, TD.CREATE_DATE AS CJRQ, (MB.MB011 - TD.TD010) AS CHAE FROM PURTC TC INNER JOIN PURTD TD ON TD.TD001 = TC.TC001 AND TD.TD002 = TC.TC002 INNER JOIN (SELECT MB001, MB011, MB014, ROW_NUMBER() OVER (PARTITION BY MB001 ORDER BY MB014 DESC) as rn FROM PURMB) MB ON MB.MB001 = TD.TD004 AND MB.rn = 1 WHERE TC.TC014 = 'N' AND TD.TD004 <> '9999') SELECT DBB, DHH, DBB2, DHH2, XHH, PHH, PMM, GGG, CGDJ, SDCGDJ, SXRQ, CJRQ, CHAE FROM PriceComparison WHERE COALESCE(CHAE, 0) <> 0 ORDER BY DBB, DHH, XHH”
sql语句 = 外部数据库1.cha询 (语句)
调试输出 (“运行完了”)


i支持库列表   支持库注释   
iext扩展界面支持库一
spec特殊功能支持库


短语句,cha询按下去一点事没有
  
如果真 (外部数据库1.打开SQL数据库 (“192.168.00.000”, “00”, “000”, “000”, , ))
返回 ()
超级列表框29.全部删除 ()
语句 = “SELECT *FROM PURTD WHERE SUBSTRING(CREATE_DATE, 1, 8) = '20251111';”
sql语句 = 外部数据库1.cha询 (语句)
调试输出 (“运行完了”)


i支持库列表   支持库注释   
iext扩展界面支持库一
spec特殊功能支持库


可能是多表联查多了,我不清楚原因


补充内容 (2025-11-17 11:09):
完整语句在二楼

最佳答案

查看完整内容

在数据管理软件执行下看有没有问题 先确定是哪个环节出问题

点评

遇事不决问AI   美国  发表于 2025-11-17 11:38
结帖率:87% (13/15)
发表于 2025-11-17 11:08:30 | 显示全部楼层   天津市天津市
在数据管理软件执行下看有没有问题 先确定是哪个环节出问题
回复

使用道具 举报

结帖率:100% (45/45)

签到天数: 5 天

 楼主| 发表于 2025-11-17 11:09:18 | 显示全部楼层   上海市上海市
完整语句
  
WITH PriceComparison AS (
SELECT
TC.TC001 AS DBB,
TC.TC002 AS DHH,
TD.TD001 AS DBB2,
TD.TD002 AS DHH2,
TD.TD003 AS XHH,
TD.TD004 AS PHH,
TD.TD005 AS PMM,
TD.TD006 AS GGG,
TD.TD010 AS CGDJ,
MB.MB011 AS SDCGDJ,
MB.MB014 AS SXRQ,
TD.CREATE_DATE AS CJRQ,
(MB.MB011 - TD.TD010) AS CHAE
FROM PURTC TC
INNER JOIN PURTD TD ON TD.TD001 = TC.TC001 AND TD.TD002 = TC.TC002
INNER JOIN (
SELECT
MB001,
MB011,
MB014,
ROW_NUMBER () OVER (PARTITION BY MB001 ORDER BY MB014 DESC) as rn
FROM PURMB
) MB ON MB.MB001 = TD.TD004 AND MB.rn = 1
WHERE TC.TC014 = ' N'
AND TD.TD004 <> ' 9999'
)
SELECT
DBB,
DHH,
DBB2,
DHH2,
XHH,
PHH,
PMM,
GGG,
CGDJ,
SDCGDJ,
SXRQ,
CJRQ,
CHAE
FROM PriceComparison
WHERE COALESCE (CHAE, 0) <> 0  
ORDER BY DBB, DHH, XHH

回复

使用道具 举报

结帖率:100% (18/18)

签到天数: 6 天

发表于 2025-11-17 11:35:08 | 显示全部楼层   美国
优化说明:
增加第二层CTE:将过滤条件提取到独立的CTE中,使查询逻辑更清晰
详细注释:为每个字段和查询逻辑添加了中文注释,便于理解
查询结构优化:
将ROW NUMBER()子查询独立出来,提高可读性
将过滤条件分离到专门的CTE中
性能考虑:
保持了原有的索引友好JOIN条件
CTE结构便于数据库优化器进行优化
可维护性:清晰的分层结构便于后续修改和维
  
-- 采购价格对比查询,用于分析采购单价格与市场参考价的差异[/size][/font]
[/b][/color]
-- 通过CTE结构化查询,提高可读性和性能
WITH PriceComparison AS (
-- 主查询:关联采购主表、明细表和市场参考表
SELECT
TC.TC001 AS DBB,          -- 采购单编号
TC.TC002 AS DHH,          -- 采购单号
TD.TD001 AS DBB2,         -- 明细单编号
TD.TD002 AS DHH2,         -- 明细单号
TD.TD003 AS XHH,          -- 序号
TD.TD004 AS PHH,          -- 品号
TD.TD005 AS PMM,          -- 品名
TD.TD006 AS GGG,          -- 规格
TD.TD010 AS CGDJ,         -- 采购单价
MB.MB011 AS SDCGDJ,       -- 市场参考单价
MB.MB014 AS SXRQ,         -- 生效日期
TD.CREATE_DATE AS CJRQ,   -- 创建日期
(MB.MB011 - TD.TD010) AS CHAE  -- 价格差异(市场价-采购价)
FROM PURTC TC
-- 内连接采购明细表,获取详细采购信息
INNER JOIN PURTD TD ON TD.TD001 = TC.TC001
AND TD.TD002 = TC.TC002
-- 内连接市场参考表,获取最新市场参考价
INNER JOIN (
-- 子查询:获取每个品号最新的市场参考价记录
SELECT
MB001,                    -- 品号
MB011,                    -- 市场参考单价
MB014,                    -- 生效日期
ROW_NUMBER () OVER (
PARTITION BY MB001   -- 按品号分组
ORDER BY MB014 DESC  -- 按生效日期降序排序
) as rn                   -- 行号,用于获取最新记录
FROM PURMB
) MB ON MB.MB001 = TD.TD004 AND MB.rn = 1  -- 关联最新市场参考价
-- 过滤条件:只处理未关闭的采购单,排除特殊品号 ' 9999'
WHERE TC.TC014 = ' N'      -- 采购单状态为未关闭
AND TD.TD004 <> ' 9999'  -- 排除特殊品号
),
FilteredResults AS (
-- 第二层CTE:过滤价格差异不为0的记录
SELECT
DBB, DHH, DBB2, DHH2, XHH, PHH, PMM, GGG,
CGDJ, SDCGDJ, SXRQ, CJRQ, CHAE
FROM PriceComparison
WHERE COALESCE (CHAE, 0) <> 0  -- 排除价格差异为0或NULL的记录
)
-- 最终结果:按采购单、明细单、序号排序
SELECT
DBB,     -- 采购单编号
DHH,     -- 采购单号
DBB2,    -- 明细单编号
DHH2,    -- 明细单号
XHH,     -- 序号
PHH,     -- 品号
PMM,     -- 品名
GGG,     -- 规格
CGDJ,    -- 采购单价
SDCGDJ,  -- 市场参考单价
SXRQ,    -- 生效日期
CJRQ,    -- 创建日期
CHAE     -- 价格差异
FROM FilteredResults
ORDER BY DBB, DHH, XHH;  -- 按采购单编号、单号、序号排序

回复

使用道具 举报

结帖率:100% (45/45)

签到天数: 5 天

 楼主| 发表于 2025-11-17 11:47:33 | 显示全部楼层   上海市上海市
没事瞎琢磨 发表于 2025-11-17 11:28
在数据管理软件执行下看有没有问题 先确定是哪个环节出问题

问题出在  就是后进行计算的嵌套,
这个指令易语言不支持
WITH PriceComparison AS (
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表