以下SQL代码位于where子句中。有没有其他的方法可以写出来缩短这一点。下面的代码重复了很多次。我想缩短此代码减少SQL代码
((Business_Unit = 'A'
and ((
convert(money, case when substring(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1) = '-'
then substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change))) -1) else
substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))) end)
) >= 100))
OR
(Business_Unit = 'B'
AND ((
convert(money, case when substring(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1) = '-'
then substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change))) -1) else
substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))) end)
) >=100.00)
AND (text7 != 'N')
OR
Business_Unit = 'B'
AND ((
convert(money, case when substring(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1) = '-'
then substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change))) -1) else
substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))) end)
) >=100.00)
AND (text7 = 'N')
and (text4 != '')
OR Business_Unit = 'B'
AND ((
convert(money, case when substring(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1) = '-'
then substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change))) -1) else
substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))) end)
) > 300.00)
AND (text7 = 'N')
and (text4 = ''))
OR
(Business_Unit = 'C'
and ((
convert(money, case when substring(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1) = '-'
then substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change))) -1) else
substring(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))) end)
) >= 150)`enter code here`
and text1 != 'N')
也许东西它变成一个功能?虽然当你将货币值存储在一个字符串中时,会出现一些错误。为什么不首先使用金钱数据类型? – Martheen
它工作正常。当我执行时没有错误,但我只是想用可重复的代码做些事情。 – user7432916
如果你检查下面的代码,它重复一次又一次。我想避免这种情况,转换(货币,当子字符串的情况下(ltrim(rtrim(premium_change)),len(ltrim(rtrim(premium_change))),1)=' - ' then substring(ltrim(rtrim(premium_change)) ,1,len(ltrim(rtrim(premium_change)))-1)else 子串(ltrim(rtrim(premium_change)),1,len(ltrim(rtrim(premium_change)))end) )> = 100)) – user7432916