У меня следующий запрос:
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;
Когда я запускаю команду select * индивидуально для каждой таблицы "cte", я получаю нужные результаты.
Но когда все запускается вместе, я получаю что-тонапример:
Reward Value
------ -----
Daily Balance 4709.00
Value A 1.00
Value B 9.00
Я хочу, чтобы данные Value A / Value B отображались без каких-либо десятичных значений, как это происходит при непосредственном выполнении выбора для таблицы.Как объединить два запроса в один, чтобы правильно отобразить эти данные?
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;