我有以下查询:
create table #Result (Reward varchar(40), Value MONEY);
insert #Result exec GetCurrentCycleQualifierStatusByAccountId @AccountId=76011;
with cteFirstResults as
(select Reward, round(Value,2) as Value from #Result where Reward like '%Balance%'),
cteSecondResults as
(select Reward, convert(INTEGER, Value) as Value from #Result where Reward NOT like '%Balance%')
select * from cteFirstResults
UNION ALL
select * from cteSecondResults;
drop table #Result;
当针对每个“cte”表单独运行 select * 时,我得到了我想要的结果。
但是当一起运行时,我得到类似的东西:
Reward Value
------ -----
Daily Balance 4709.00
Value A 1.00
Value B 9.00
我希望值 A/值 B 数据显示没有任何十进制值,就像直接对表运行选择时那样。如何将这两个查询合并为一个以正确显示此数据?
Round(value,0) 什么都不做。
我无法更改从中收集数据的存储过程,但我可以以任何我喜欢的方式制作临时表。
谢谢,
杰森
解决方案:
create table #Result (Reward varchar(40), Value MONEY);
insert #Result exec GetCurrentCycleQualifierStatusByAccountId @AccountId=76011;
With cteFirstResults as
(
Select Reward, Value
From #Result
Where Reward like '%Balance%'
)
, cteSecondResults as
(
Select Reward, cast(Value as int) as Value
From #Result
Where Reward Not like '%Balance%'
)
Select Reward, Cast( Value As varchar(max)) As Value
From cteFirstResults
Union All
Select Reward, Cast( value As varchar(max)) as Value
From cteSecondResults;
drop table #Result;