私は次のクエリを持っています:
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
テーブルに対して直接selectを実行する場合のように、値A/値Bのデータを10進値なしで表示したいと思います。このデータを正しく表示するには、2つのクエリを1つに組み合わせるにはどうすればよいですか?
Round(value、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;