将Excel公式转换为SQL语法计算
我需要帮助解决将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
=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