各位老师下面是我的一个查询语句SELECT MAX(CASE WHEN 类别 = '老师' THEN 工资小计 ELSE '' END) AS 老师,
FROM (select 类别,sum(工资) as 工资小计 from GZ..myGZ group by 类别) as a
“工资”如果是float类型,就能够通过,如果是money类型就总是提示“不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询。”我试图用它的提示做修改,但没有成功,请帮忙解释一下,到底是什么问题,我该怎么改,前提是一定要使用money类型
FROM (select 类别,sum(工资) as 工资小计 from GZ..myGZ group by 类别) as a
“工资”如果是float类型,就能够通过,如果是money类型就总是提示“不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询。”我试图用它的提示做修改,但没有成功,请帮忙解释一下,到底是什么问题,我该怎么改,前提是一定要使用money类型
MAX(CASE WHEN 类别 = '老师' THEN ltrim(工资小计) ELSE '' END) AS 老师,
FROM
(select 类别,sum(工资) as 工资小计 from GZ..myGZ group by 类别) as a
declare @myGZ table
(类别 varchar(4),工资 money,col1 varchar(1),col2 varchar(1))
insert into @myGZ
select '老师',5,'a','f' union all
select '老师',7,'d',null union all
select '老师',9,'n','d' union all
select '学生',1,'g','s' union all
select '学生',4,'b',null union all
select '学生',5,'k','m'SELECT
MAX(CASE WHEN 类别 = '老师' THEN 工资小计 ELSE '' END) AS 老师 --这里多了个逗号
FROM (select 类别,sum(工资) as 工资小计 from @myGZ group by 类别) as a
/*
老师
---------------------
21.00
*/
--直接求和不是一样吗?不需要嵌套
declare @myGZ table
(类别 varchar(4),工资 money,col1 varchar(1),col2 varchar(1))
insert into @myGZ
select '老师',5,'a','f' union all
select '老师',7,'d',null union all
select '老师',9,'n','d' union all
select '学生',1,'g','s' union all
select '学生',4,'b',null union all
select '学生',5,'k','m'SELECT [老师]=sum(CASE WHEN 类别 = '老师' THEN 工资 ELSE '' END) FROM @myGZ
/*
老师
---------------------
21.00
*/
SELECT
MAX(CASE WHEN 类别 = '老师' THEN 工资小计 ELSE 0.00 END) AS 老师,
FROM
(select 类别,sum(工资) as 工资小计 from GZ..myGZ group by 类别) as a