SQL代码在数据集里一直报同一个错误,但是把语句放在SQL里,却可以正常运行,这是帆软的BUG吗?

一直提示列名FWorkshipID无效。

代码如下:

----------[St_StockResCurrentRpt].汇总表(金额)************/
declare @strName varchar(100)
declare @strCode    varchar(100)
set nocount on;
IF OBJECT_ID(N'tempdb.dbo.#temp1') IS NOT NULL 
BEGIN
    DROP TABLE #temp1
END

IF OBJECT_ID(N'tempdb.dbo.#StockClass') IS NOT NULL 
BEGIN
    DROP TABLE #StockClass
END
Create Table #StockClass (
  FStockClassID int
 )
  begin
   if exists(select 1 from Mf_StockClass where FStockClassID=255 and Upid=0)
    begin
     select @strCode=LevelCode from Mf_StockClass where FStockClassID=255
     insert into #StockClass(FStockClassID)
     select FStockClassID from Mf_StockClass  with (nolock)
     where left(LevelCode,4)=@strCode
    end
  end
;WITH tb AS ( 
SELECT d.FStockResID,d.FWorkShipID,
d.FWorkName as 仓库,g.FStClName as 物料一级分类,f.FStClName as 物料二级分类,d.FStockResID as id,c.FTaxPrice as 单价,d.FResCode as 物料编码,FResName as 物料名称,FResSpec as 规格型号,FUnitName as 单位,
    sum(本期总入库) as 本期入库,sum(本期总出库) as 本期出库,sum(本期结存) as 本期结存,sum(上期结存) as 上期结存,
    sum(本期报废) as 本期报废,SUM(本期调整) as 本期调整,isnull(c.FTaxPrice,0)*sum(本期结存) AS 结存金额  from IKD_Result.dbo.St_StockResCurrent d  with (nolock) left JOIN 
    (SELECT a.FTaxPrice,a.FStockResID,a.FStockEnterDeID FROM (select FTaxPrice,FStockResID,FStockEnterDeID  from Mf_StockEnterDe union all select FTaxPrice,FStockResID,FStockEnterDeID  from IKD_Data.dbo.Mf_StockEnterDe)   a inner join 
( SELECT FStockResID,MAX(FStockEnterDeID) AS FStockEnterDeID FROM (SELECT FStockResID,FStockEnterDeID FROM Mf_StockEnterDe WHERE ISNULL(FTaxPrice,0)<>0 union  all SELECT FStockResID,FStockEnterDeID FROM  IKD_Data.dbo.Mf_StockEnterDe WHERE ISNULL(FTaxPrice,0)<>0)e  GROUP BY FStockResID)b
on a.FStockEnterDeID=b.FStockEnterDeID) c on d.FStockResID=c.FStockResID
           left join Mf_StockClass f on f.FStockClassID=d.FStockClassID
     left join Mf_StockClass g on g.FStockClassID=f.upid
   where d.FResType=1
   and d.FStatus=1 
            and (d.FWorkShipID=0 or 0=0)
      and (d.FStockClassID  in (select FStockClassID from #StockClass  with (nolock)) )
      and (d.FStockResID=0 or 0=0)
   group BY d.FStockResID,d.FWorkShipID, 
   d.FWorkName,g.FStClName,f.FStClName,FResCode,FResName,FResSpec,FUnitName,d.FStockResID,c.FTaxPrice  
),
tb_jiecun AS (
SELECT tb.FStockResID,tb.FWorkShipID, tb.仓库,tb.物料编码,tb.物料名称,tb.规格型号,tb.本期结存,tb.结存金额,ISNULL(tb.单价,0)单价 FROM tb WHERE tb.本期结存>0       
),
tb_hetong AS (
SELECT b.FStockResID,b.FPrice FROM Si_Contract a LEFT JOIN Si_ContractDe b ON a.FContractID=b.FContractID 
 LEFT JOIN dbo.Mf_Supply c ON c.FSupplyID=a.FSupplyID
 WHERE a.FType=2 AND a.FEnable=1
 GROUP BY  b.FStockResID,b.FPrice
)
SELECT tb_jiecun.*,CASE WHEN isnull(tb_jiecun.单价,0)=0 THEN tb_hetong.FPrice*1.13 WHEN isnull(tb_jiecun.单价,0)<>0 THEN tb_jiecun.单价 ELSE 0 END fprice  
into #temp1
FROM tb_jiecun LEFT JOIN tb_hetong ON tb_hetong.FStockResID = tb_jiecun.FStockResID WHERE tb_jiecun.仓库 NOT LIKE '%夹具%' 
and 仓库 in ('${仓库}')
;WITH tb AS (
SELECT a.单价 ,
       CASE WHEN ISNULL(a.结存金额,0)=0 AND a.fprice<>0 THEN a.fprice*a.本期结存 WHEN ISNULL(a.结存金额,0)<>0 THEN a.结存金额 ELSE 0 END jiecun_amt ,
       a.本期结存 ,
       a.规格型号 ,
       a.物料名称 ,
       a.物料编码 ,
       a.仓库 ,a.FWorkShipID,
       a.FStockResID ,
       a.fprice
    FROM #temp1 a
),
tb_replace AS (
SELECT FStockResID,FNStockResID,FWorkshipID FROM dbo.St_Replace
),
tb_merge_id AS (
SELECT tb.*,tb_replace.FNStockResID FROM tb LEFT JOIN tb_replace ON tb.FStockResID=tb_replace.FStockResID AND tb.FWorkShipID=tb_replace.FWorkshipID
WHERE tb_replace.FNStockResID IS NOT NULL
UNION
SELECT tb.*,tb_replace.FNStockResID FROM tb LEFT JOIN tb_replace ON tb.FStockResID=tb_replace.FStockResID AND tb.FWorkShipID=tb_replace.FWorkshipID
WHERE tb_replace.FNStockResID IS  NULL 
),
tb_idnew AS (
SELECT CASE WHEN a.FNStockResID IS NOT NULL 
THEN a.FNStockResID WHEN a.FNStockResID IS NULL 
THEN a.FStockResID ELSE 0 END FStockResID,a.本期结存,a.jiecun_amt ,a.fprice,a.仓库
FROM tb_merge_id a WHERE 1=1
),
tb_newoldfor AS (
SELECT tb_idnew.FStockResID,a.FResCode,a.FResName,tb_idnew.本期结存,tb_idnew.jiecun_amt,tb_idnew.仓库
FROM tb_idnew LEFT JOIN mf_stockres a ON a.FStockResID=tb_idnew.FStockResID
WHERE 1=1 
)
SELECT a.FStockResID,b.FResName AS 物料名称,b.FResSpec AS 规格型号,
SUM(a.本期结存)本期结存,SUM(a.jiecun_amt)jiecun_amt,
SUM(a.jiecun_amt)/SUM(a.本期结存) AS fprice,
a.仓库
FROM tb_newoldfor a 
LEFT JOIN dbo.Mf_StockRes b ON a.FStockResID=b.FStockResID
WHERE 1=1
GROUP BY a.FStockResID,b.FResName,b.FResSpec,
a.仓库


FineReport cfan_yjr 发布于 2020-5-18 17:41 (编辑于 2020-5-18 17:46)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
cfan_yjrLv2初级互助
发布于2020-5-18 17:55

原因是帆软对于临时表的支持有问题,不用临时表后,就正常了。


最佳回答
0
lisk_njLv4初级互助
发布于2020-5-18 17:43

把sql和报错信息贴出来看看

  • cfan_yjr cfan_yjr(提问者) 代码贴上了
    2020-05-18 17:45 
  • lisk_nj lisk_nj 回复 cfan_yjr(提问者) 实话说,sql我没看懂,但为什么不把存储过程写道数据库里面,帆软直接调用呢
    2020-05-18 17:52 
  • 1关注人数
  • 438浏览人数
  • 最后回答于:2020-5-18 17:55
    请选择关闭问题的原因
    确定 取消
    返回顶部