我有一个名为float testdiv: 1.18729637828
long testdiv: 1.24389351342
float testsum: 0.48933646021
long testsum: 0.880058590455
float testmul: 0.477367560491
long testmul: 1.00981425402
float testsub: 0.48860840934
long testsub: 0.83331387588
的表,有三列
PriceDetails
。我必须根据"price","discount formula" and "finalprice"
列计算最终价格。
我的表格如下,
"Price" and "discount formula"
我想计算最终价格。公式为Price DiscountFormulae
100 100*(3/100)
200 200*(1.1/100)+200*(5/100)
300 300*(1/100)+300*(3/100)+300*(2/100)
400 400*(7/100)+400*(6.6/100)+400*(5.5/100)+400*(4/100)
例如
100 - (100 *(3/100))= 97
我的预期输出将是
"Price"-"DiscountFormulae"
我如何得到这个。请帮帮我。
答案 0 :(得分:1)
不是很好的解决方案,但它表明,它有多难:
CREATE TABLE #temp (Price int, DiscountFormula Varchar(1000))
INSERT INTO #temp
(#temp.Price, #temp.DiscountFormula)
VALUES
(100,'100.0*(3.0/100)'),
(200,'200.0*(1.1/100)+200*(5.0/100)'),
(300,'300.0*(1.0/100)+300*(3.0/100)+300*(2.0/100)'),
(400,'400.0*(7.0/100)+400*(6.6/100)+400*(5.5/100)+400*(4.0/100)')
DECLARE @price int
DECLARE cur CURSOR FOR SELECT t.Price FROM #temp AS t
OPEN cur
FETCH NEXT FROM cur INTO @price
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @sql nvarchar(MAX) = N'
SELECT
t.Price,
t.DiscountFormula,
' + (SELECT TOP 1 DiscountFormula FROM #Temp WHERE Price = @price) + N' as Value
FROM #temp AS t
WHERE Price = ' +CONVERT(nvarchar(max),@price)
EXEC sp_executesql @sql
FETCH NEXT FROM cur INTO @price
END
CLOSE cur
DROP TABLE #temp
顺便说一下,在公式中使用浮点值。
答案 1 :(得分:0)
您可以在存储过程中执行此操作,例如:
但是在用户定义的函数中不允许使用动态SQL,如Exiting
或exec
。
sp_executesql