组合列名导致错误
Combining column name is causing error
我有两列要合并并显示数据,我试过如下
select
case
when status = 'R'
then 'Resign'
when status = 'A'
then 'Active'
end as status1,
Program_name + ' ' + emp_card_no as program_details,
*
from
GetEmployeeDetails
where
emp_name = 'ABHAY ASHOK MANE'
and STATUS = 'A'
order by
EMP_NAME
但我收到一个错误:
Error converting data type varchar to numeric.
这是可用的示例数据
试试这个:
select
case when status='R' then 'Resign'
when status='A' then 'Active'
end as status1,
Program_name + ' (' + convert(varchar, emp_card_no) + ') ' as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
如果需要括号,请使用以下内容:
select
case when status='R' then 'Resign'
when status='A' then 'Active'
end as status1,
Program_name + ' (' + convert(varchar(10), emp_card_no)+')' as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
CAST 到 VARCHAR 的 Int 值列:
在您的查询中 将 emp_card_no 转换为 VARCHAR
select
case when status='R' then 'Resign'
when status='A' then 'Active' end as status1,
[Program_name] + ' ' + CAST(emp_card_no AS VARCHAR(50)) as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
您可以使用 concat 来进行内部转换..
select case when status='R' then 'Resign'
when status='A' then 'Active' end as status1,
concat(Program_name, ' ', emp_card_no) as program_details,
* from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
可以对字符串类型的值进行列组合。所以如果不是,则必须将列转换为 varchar 数据类型。
下面是您的解决方案,对 case 语句进行了改进。
select
case status
when 'R'
then 'Resign'
when 'A'
then 'Active'
end as status1,
Program_name + ' ' + convert(varchar(50),emp_card_no) as program_details,
*
from
GetEmployeeDetails
where
emp_name = 'ABHAY ASHOK MANE'
and STATUS = 'A'
order by
EMP_NAME
我有两列要合并并显示数据,我试过如下
select
case
when status = 'R'
then 'Resign'
when status = 'A'
then 'Active'
end as status1,
Program_name + ' ' + emp_card_no as program_details,
*
from
GetEmployeeDetails
where
emp_name = 'ABHAY ASHOK MANE'
and STATUS = 'A'
order by
EMP_NAME
但我收到一个错误:
Error converting data type varchar to numeric.
这是可用的示例数据
试试这个:
select
case when status='R' then 'Resign'
when status='A' then 'Active'
end as status1,
Program_name + ' (' + convert(varchar, emp_card_no) + ') ' as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
如果需要括号,请使用以下内容:
select
case when status='R' then 'Resign'
when status='A' then 'Active'
end as status1,
Program_name + ' (' + convert(varchar(10), emp_card_no)+')' as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
CAST 到 VARCHAR 的 Int 值列:
在您的查询中 将 emp_card_no 转换为 VARCHAR
select
case when status='R' then 'Resign'
when status='A' then 'Active' end as status1,
[Program_name] + ' ' + CAST(emp_card_no AS VARCHAR(50)) as program_details,
*
from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
您可以使用 concat 来进行内部转换..
select case when status='R' then 'Resign'
when status='A' then 'Active' end as status1,
concat(Program_name, ' ', emp_card_no) as program_details,
* from GetEmployeeDetails
Where emp_name ='ABHAY ASHOK MANE'and STATUS= 'A' ORDER BY EMP_NAME
可以对字符串类型的值进行列组合。所以如果不是,则必须将列转换为 varchar 数据类型。
下面是您的解决方案,对 case 语句进行了改进。
select
case status
when 'R'
then 'Resign'
when 'A'
then 'Active'
end as status1,
Program_name + ' ' + convert(varchar(50),emp_card_no) as program_details,
*
from
GetEmployeeDetails
where
emp_name = 'ABHAY ASHOK MANE'
and STATUS = 'A'
order by
EMP_NAME