Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

How to convert decimal to varchar

Posted on 2004-08-24
3
Medium Priority
?
15,319 Views
Last Modified: 2008-01-09
Select OrderID,
'Sell--' + Convert(varchar(24), sum(CAST(Price AS DECIMAL(13,2))) )
From OrderDetail
GroupBy OrderID

I want to display price as varchar but somehow above code send an following error
"Error converting data type varchar to numeric."

I want to display result as following
OrderID Price
-----------------
1, S-212.23
2, S-46.83
3, S-912.20
4, S-52.73
0
Comment
Question by:Bharat Guru
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 50

Expert Comment

by:Lowfatspread
ID: 11885013
try
sounds like you've got some invalid data... what is the datatype of the price column?

 Select OrderID,
'Sell--' +Convert(varchar(24),sum(case when isnumeric(price) when 1 then convert(decimal(13,2),Price))
                                 else 0.00 end))
 From OrderDetail
GroupBy OrderID

and use this to identify any non numerics..
select orderid , price
from orderdetail
where isnumeric(price) = 0
0
 

Author Comment

by:Bharat Guru
ID: 11885488
I actually want to do something like following

Declare @Temp CHAR (1)
Set @Temp = 'Y'

Select OrderID,
              Case When @Temp = 'Y' Then
                  Convert(varchar(24), sum(CAST(Price AS DECIMAL(13,2)))  )
              Else
                  sum(CAST(Price AS DECIMAL(13,2)))
              End AS "Price"

 From OrderDetail
GroupBy OrderID


Price is a varchar field in table
0
 
LVL 50

Accepted Solution

by:
Lowfatspread earned 80 total points
ID: 11886399
you can only do this...
you can't have multiple datatypes for a column....

Declare @Temp CHAR (1)
Set @Temp = 'Y'

Select OrderID,
              Case When @Temp = 'Y' Then
                  Convert(varchar(24), price)
              Else
                  convert(varchar(13),Price)
              End AS "Price"
 From ( select orderid,sum(cast(price as decimal(13,2))) as  price from OrderDetail
GroupBy OrderID) as x


you could use dynamic sql (or have 2 sql statements (preferred solution))

declare @sqlstm varchar(8000)
Set @sqlstm='Select orderid,' + case when @temp='Y' then 'Convert(varchar(24), sum(CAST(Price AS DECIMAL(13,2)))  ) ' else ' sum(CAST(Price AS DECIMAL(13,2)))' end + ' from orderdetail group by orderid'

exec(@sqlstm)  


0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When trying to connect from SSMS v17.x to a SQL Server Integration Services 2016 instance or previous version, you get the error “Connecting to the Integration Services service on the computer failed with the following error: 'The specified service …
This month, Experts Exchange sat down with resident SQL expert, Jim Horn, for an in-depth look into the makings of a successful career in SQL.
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question