sql - 使用动态变量舍入十进制值
问题描述
我需要根据 SQL 函数中表 B 中的另一列对表 A 中的一列的值进行舍入。
DECLARE @currencyround INT
SELECT @currencyround = ISNULL(currencyround, 2)
FROM dbo.PRTL_currencySettings
当我@currencyround
像下面这样直接在查询中输入值时,它工作正常:
SELECT
CAST(POS.BALANCE AS DECIMAL(18, 2)) AS DBAmount
FROM
dbo.POS_SALES POS
当我@currencyround
输入如下值时,它显示错误:
'@currencyround' 附近的语法不正确。
SELECT
CAST(POS.BALANCE AS DECIMAL(18, @currencyround)) AS DBAmount
FROM
dbo.POS_SALES POS
解决方案
你有什么不明白?类型定义不允许变量。您可以使用动态 SQL 来做到这一点,但这似乎有点矫枉过正。
如果您关心变量的输出方式,请使用str()
或format()
创建您想要的格式。
推荐阅读
- blazor-server-side - 有时在tab或浏览器关闭时有时会在一段时间后(或从未)拨打电话
- flutter - Flutter InAppWebView:如何更改初始网址
- python - seaborn 热图显示轴标签,但当 df.corr 为 NaN 时没有值
- r - 从 R 读取 CSV 返回错误和奇怪的 html
- linux - Flutter Chrome Executable 仅适用于铬
- r - 后续行动:将 data.frame 中缺失的列放回 dta.frames 列表中
- html - scaleX 在关键帧中自动增加
- ethereum - ERC20:尝试从我自己的简单 DEX 购买我自己的 ERC20 代币(基于 OpenZeppelin)时出现零地址异常
- javascript - 无法从 React JS 中的表单中检索查询词
- javascript - 用逗号分割字符串,不留下空格