我有一个存储过程,它使用一系列临时表来提取数据,格式化然后插入到新表中。我知道它没有意义,但我试图将null格式化为''(空白)或' - '破折号。这是bc。零值实际上代表了一种真正的平衡。当我这样做时,我不断收到将varchar转换为数字的错误。
CASE
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN ''
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN ##TEMPTABLE.[L/C Amount]
ELSE ''
END AS [L/C Amount]
我试过了:
CASE
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN ''
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN convert(varchar(20), ##TEMPTABLE.[L/C Amount] )
ELSE ''
END AS [L/C Amount]
这甚至可能吗? 谢谢你的帮助。
答案 0 :(得分:0)
除非[L/C Amount]
列实际上已经是VARCHAR
,否则我不明白为什么您的查询不起作用。在这种情况下,您应该更改您的声明:
CASE
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage'
THEN ''
WHEN ##TEMPTABLE.[L/C Amount] <> '0'
THEN CONVERT(VARCHAR(20), ##TEMPTABLE.[L/C Amount]) -- why is this necessary?
ELSE ''
END AS [L/C Amount]