首页 > 解决方案 > SQL:根据表中保存的计算对每一行进行不同的计算

问题描述

我有一张包含付款条件的表格,我还想在每一行中保存计算,以便在选择中使用它。

目标是选择所有付款条件以及基于参数的计算日期。我的问题是:如何让每一行的计算结果显示在结果(表)的列中?我不知道 :/

我们使用 MS sql-server-2018。

示例源表:[table_payment_terms]

ID | payment term | calculation           | description
1  | d7           | date + 7              | 7 days
2  | d14          | date + 14             | 14 days
3  | m14          | nextmonths(date) + 6  | 7th of next month

参数:01.01.2020

声明可能类似于:

SELECT 'payment term', 
       function(description(parameter)) AS 'calculated date', 'description' 
FROM [table_payment_terms]

结果:

payment term | calculated date | description
d7           | 08.01.2020      | 7 days
d14          | 15.01.2020      | 14 days
m14          | 07.02.2020      | 7th of next month

标签: sqlsql-server

解决方案


这是您希望实现的一个完全不平凡的功能。

本质上,如果您想在 SQL 中执行此操作,您将必须创建一个标量值函数,该函数接受一个日期参数,然后将您的函数描述作为第二个参数(假设唯一可能的变量输入是单个日期)。

在该函数中,您将不得不根据您定义的任何语法规则解析您的函数描述并相应地计算您的输出。


推荐阅读