直接在数据集创建临时表的方式查询,会报错:返回不了结果集

IF OBJECT_ID('tempdb..#LotZZTime') IS NOT NULL  

    DROP TABLE #LotZZTime;  

IF OBJECT_ID('tempdb..#OpJZTime') IS NOT NULL  

    DROP TABLE #OpJZTime;  

IF OBJECT_ID('tempdb..#LotZhcTime') IS NOT NULL  

    DROP TABLE #LotZhcTime;  

IF OBJECT_ID('tempdb..#OpZhcTime') IS NOT NULL  

    DROP TABLE #OpZhcTime;  

 

-- 创建临时表来存储进站时间  

CREATE TABLE #LotZZTime (  

    LotNo NVARCHAR(50), -- 假设LotNo的数据类型是NVARCHAR(50),根据实际情况调整  

    lot_zz_time DATETIME  

);  

  

INSERT INTO #LotZZTime (LotNo, lot_zz_time)  

SELECT LotNo, Min(EventTime) AS lot_zz_time  

FROM TBLWIPCONT_PARTIALIN WITH (NOLOCK)  

-- WHERE areano = 'DNKE-JJG' -- 如果需要,取消注释这行来添加过滤条件  

GROUP BY LotNo;  

  

-- 创建临时表来存储每个批维度当前工序的进站时间  

CREATE TABLE #OpJZTime (  

    LotNo NVARCHAR(100),  

    opno NVARCHAR(50), -- opno

    opno_jz_time DATETIME  

);  

  

INSERT INTO #OpJZTime (LotNo, opno, opno_jz_time)  

SELECT LotNo, opno, Min(EventTime) AS opno_jz_time  

FROM TBLWIPCONT_PARTIALIN WITH (NOLOCK)  

-- WHERE areano = 'DNKE-JJG' -- 如果需要,取消注释这行来添加过滤条件  

GROUP BY LotNo, opno;  

  

-- 创建临时表来存储每个批维度的最后出站时间  

CREATE TABLE #LotZhcTime (  

    LotNo NVARCHAR(50),  

    lot_zhc_time DATETIME  

);  

  

INSERT INTO #LotZhcTime (LotNo, lot_zhc_time)  

SELECT LotNo, Max(EventTime) AS lot_zhc_time  

FROM TBLWIPCONT_PARTIALOUT WITH (NOLOCK)  

-- WHERE areano = 'DNKE-JJG' -- 如果需要,取消注释这行来添加过滤条件  

GROUP BY LotNo;  

  

-- 创建临时表来存储每个批维度当前工序的最后出站时间  

CREATE TABLE #OpZhcTime (  

    LotNo NVARCHAR(100),  

    opno NVARCHAR(50),   

    op_zhc_time DATETIME  

);  

  

INSERT INTO #OpZhcTime (LotNo, opno, op_zhc_time)  

SELECT LotNo, opno, Max(EventTime) AS op_zhc_time  

FROM TBLWIPCONT_PARTIALOUT WITH (NOLOCK)  

-- WHERE areano = 'DNKE-JJG' -- 如果需要,取消注释这行来添加过滤条件  

GROUP BY LotNo, opno;  

 

-- 主查询,使用临时表来引用中间结果   

SELECT a7.LOTNO,  

       t8.lot_zz_time,  

       b1.opno_jz_time,  

       b2.op_zhc_time,  

       b4.lot_zhc_time  

FROM TBLWIPLOTSTATE a7  

LEFT JOIN #LotZZTime t8 ON a7.LOTNO = t8.LotNo  

LEFT JOIN #OpJZTime b1 ON a7.LOTNO = b1.LotNo AND a7.OPNO = b1.opno  

LEFT JOIN #LotZhcTime b4 ON a7.LOTNO = b4.LotNo  

LEFT JOIN #OpZhcTime b2 ON a7.LOTNO = b2.LotNo AND a7.OPNO = b2.opno

 

这段程序在我本地sqlsever数据库执行没有问题,放到帆软数据集去执行就会报错

FineReport yundou 发布于 2024-4-26 13:40
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
snrtuemcLv8专家互助
发布于2024-4-26 13:41

帆软数据集不支持这个写法

建议直接数据库写好存储过程,或者视图

帆软直接调用存储过程或者视图

最佳回答
0
指间沙Lv6中级互助
发布于2024-4-26 16:06

为啥不用with t1 as ()这种形式

  • 3关注人数
  • 265浏览人数
  • 最后回答于:2024-4-26 16:06
    请选择关闭问题的原因
    确定 取消
    返回顶部