将Excel公式转换为SQL语法计算

将Excel公式转换为SQL语法计算,sql,sql-server,excel,Sql,Sql Server,Excel,我需要帮助解决将Excel公式转换为SQL的问题 下面是公式: =IF( ([@[Net Available Stock Quantity]]+[@Subcon]+[@[In Progress WIP]]+ IFERROR([@[Raw Material In Store]]/[@[Demand Material]],0)+ IFERROR([@[Outstanding Raw Material]]/[@[Demand Material]],0)+ [@[Outstandi

我需要帮助解决将Excel公式转换为SQL的问题

下面是公式:

=IF(
  ([@[Net Available Stock Quantity]]+[@Subcon]+[@[In Progress WIP]]+
   IFERROR([@[Raw Material In Store]]/[@[Demand Material]],0)+
   IFERROR([@[Outstanding Raw Material]]/[@[Demand Material]],0)+
   [@[Outstanding WIP]])>[@[Maximun Stock]],
    ([@[Net Available Stock Quantity]]+[@Subcon]+[@[In Progress WIP]]+
    IFERROR([@[Raw Material In Store]]/[@[Demand Material]],0)+
    IFERROR([@[Outstanding Raw Material]]/[@[Demand Material]],0)+
    [@[Outstanding WIP]]-[@[Maximun Stock]]),
     IF(([@[Net Available Stock Quantity]]+[@Subcon]+[@[In Progress WIP]]+
     IFERROR([@[Raw Material In Store]]/[@[Demand Material]],0)+
     IFERROR([@[Outstanding Raw Material]]/[@[Demand Material]],0)+[@[Outstanding WIP]])<[@[Minimum Stock]],
      -[@[Minimum Stock]]+([@[Net Available Stock Quantity]]+[@Subcon]+[@[In Progress WIP]]+
      IFERROR([@[Raw Material In Store]]/[@[Demand Material]],0)+
      IFERROR([@[Outstanding Raw Material]]/[@[Demand Material]],0)+[@[Outstanding WIP]]),0)
)

请尝试此代码,并随时重新排序它们

    CASE
    WHEN ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
      COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
      COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) +
      [Outstanding WIP]) > [Maximun Stock] THEN CASE
        WHEN
          ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) + [Outstanding WIP]) < [Minimum Stock] THEN [Minimum Stock] + ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) + +[Outstanding WIP])
        ELSE ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) +
          [Outstanding WIP] - [Maximun Stock])

      END
    ELSE 0
  END
案例
何时([净可用库存量]+[分包商]+[在制品]+
合并([库存原材料]/NULLIF([需求材料],0),0)+
合并([未结原材料]/NULLIF([需求材料],0),0)+
[未清在制品]>[最大库存]然后案例
什么时候
([净可用库存量]+[分包商]+[在制品]+
合并([库存原材料]/NULLIF([需求材料],0),0)+
合并([未清原材料]/NULLIF([需求材料],0),0)+[未清在制品]<[最低库存]然后[最低库存]+([净可用库存量]+[分包商]+[在制品]+
合并([库存原材料]/NULLIF([需求材料],0),0)+
合并([未结原材料]/NULLIF([需求材料],0),0)+[未结在制品])
其他([净可用库存量]+[分包商]+[在产品]+
合并([库存原材料]/NULLIF([需求材料],0),0)+
合并([未结原材料]/NULLIF([需求材料],0),0)+
[未清在制品]-[最大库存])
结束
其他0
结束

我现在无法调试它,因为我不在SSM前面,但我建议让API的较小部分正常工作,然后构建表达式。您正在尝试在SQL Server中使用Excel语法。Excel(和Access)不是SQL Server。它们使用完全不同的语法。您需要先学习TSQL,然后再分小段进行操作以了解它,而不是一次完成所有操作。请显示
myTable
-所有字段和数据类型的定义。谢谢。@KenWhite我已经做了两列较小的计算。一切顺利,没问题。这个公式是我表格的最后一部分,这是一个非常大的最后一部分,你开始的问题(你的观点1)应该是你很久以前遇到的问题。当它进入SQL Server时,它不再是一个公式。这是一个SQL SELECT语句。区别很重要。我曾经读过有关COALESCE的文章,但由于不太了解它,所以将其分发出去。顺便说一句,这是可行的,需要修改计算。非常感谢。
[Item No]         nchar(24) 
Description       nchar(60) 
UOM               nchar(10) 
Stock             int   
Sales             int   
[Minimum Stock]   int   
[Maximum Stock]   int   
[Subcon Code]     char(24)  
[Raw Material]    char(24)  
[Description Material]  nchar(60)   
[Demand Material]   char(10)    
[In Progress WIP]   char(10)    
Subcon            int   
[Net Available Stock Quantity]  int 
[Stock Over Maximum]            int 
[Raw Material Outstanding]      int 
[Raw Material In Store]         int
[Outstanding WIP]               int
    CASE
    WHEN ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
      COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
      COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) +
      [Outstanding WIP]) > [Maximun Stock] THEN CASE
        WHEN
          ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) + [Outstanding WIP]) < [Minimum Stock] THEN [Minimum Stock] + ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) + +[Outstanding WIP])
        ELSE ([Net Available Stock Quantity] + [Subcon] + [In Progress WIP] +
          COALESCE([Raw Material In Store] / NULLIF([Demand Material], 0), 0) +
          COALESCE([Outstanding Raw Material] / NULLIF([Demand Material], 0), 0) +
          [Outstanding WIP] - [Maximun Stock])

      END
    ELSE 0
  END