我有需要根据表中提供的列比较小数点.我知道这需要动态完成,但还有其他方法可以实现吗?
create table #temp(Value1 decimal(18,10), Value2 decimal(18,12), DPtoCompare int)
insert into #temp
select 123.45478888, 123.4578888, 3 union
select 23.45478888, 23.4547988, 4 union
select 456.454789, 456.45786, 5 union
select 88.2356789, 88.2356787, 6
Run Code Online (Sandbox Code Playgroud)
如果我们尝试以下,我们会得到错误
select * from #temp
where convert(decimal(18,DPtoCompare) , Value1) = convert(decimal(18,DPtoCompare) , Value2)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下,它的工作原理,但想知道sql server 2008 R2中是否有任何函数或任何其他可能性,它将直接选择列值并选择小数点.
declare @sql varchar(max)
select @sql = isnull(@sql,'')+'
select Value1, Value2 from #temp
where DPtoCompare = '+CONVERT(varchar, t.DPtoCompare)
+' and convert(decimal(18,'+CONVERT(varchar,t.DPtoCompare)+'), value1) != '
+'convert(decimal(18,'+CONVERT(varchar,t.DPtoCompare)+'), value2)'
from (select distinct DPtoCompare from #temp) t …Run Code Online (Sandbox Code Playgroud) 我有一个结果集
Col1: Col2
a b
c d
Run Code Online (Sandbox Code Playgroud)
我想要结果集
a
b
c
d
Run Code Online (Sandbox Code Playgroud)
不使用Union,Union all和Pivot.