【发布时间】:2021-07-30 06:05:21
【问题描述】:
我在 SQL Server 中有 2 个表,其中
DECLARE @Formulas TABLE (ID int, Calculation varchar(max))
INSERT INTO @Formulas
VALUES (1, '([445660][SOLDE]+[401000][DEBIT]-[380100][CREDIT])')
DECLARE @Values TABLE (ValueID int, Solde money, Debit money, Credit money)
INSERT INTO @Values
VALUES (445660, 2500, 5500, 3000),
(401000, 0, 2500, 0),
(380100, 0, 0, 3500.24)
DECLARE @SQL varchar(max)=''
SELECT @SQL = @SQL+concat(',(',ID,',',Calculation,')') From @Formulas --Where ID=2
SELECT @SQL = Replace(@SQL,'['+cast(ValueID as varchar(25))+']',/[Value]/) From @Values
SELECT @SQL = 'Select * From ('+Stuff(@SQL,1,1,'values')+') N(ID,Value)'
EXEC(@SQL)
3 代码中的 /[Value]/ 必须更改为列(Solde, Debit, Credit),因为我有 3 列,用户可以选择其中任何一个。
我举个例子 Calculating/Evaluate user defined formula with SQL 但它是单列
提前致谢。
【问题讨论】:
标签: sql sql-server tsql dynamic-sql