TSQL:如何在不更改数据的情况下使用UNION ALL组合两个值(money / int)?
我有以下查询:
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数据显示没有任何十进制值,就像它们直接对表运行select时一样。如何将两个查询合并为一个以正确显示此数据?
Round(值,0)什么都不做。
我无法更改我正在收集数据的sproc,但我可以按照我喜欢的方式制作临时表。
谢谢,
贾森
解决方案:
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;
没有找到相关结果
已邀请:
3 个回复
蔬谢窗港
结果:
澜悍景哭苟
舜辉