create table tbnew (编号 varchar(10),部门 varchar(10),姓名 varchar(10),加班工资 int,加班原因 varchar(10),日期 varchar(10)) insert into tbnew select '1-339-4','财务处','王红',20,'值班','2006-03-01'
union all select '1-339-1','财务处','王红',30,'做报表','2006-03-07'
union all select '1-339-1','财务处','王红',50,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',50,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',20,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',10,'替值班','2006-03-20'
union all select '1-339-1','财务','王',10,'替值班','2006-03-20'
union all select '1-339-1','财务','王',30,'替值班','2006-03-20'
go
create function word( @bm varchar(1000),@bh varchar(1000) )
returns varchar(1000)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(日期 as varchar)+cast(加班原因 as varchar) from tbnew where 编号=@bh and 部门=@bm
return stuff(@sql,1,1,'')
end
select 编号,部门,姓名,sum(加班工资) as 加班工资,dbo.word(编号,部门) as 加班原因 from tbnew group by 部门,姓名,编号
请帮我看一下,为什么查出来的加班原因返回的是NULL
union all select '1-339-1','财务处','王红',30,'做报表','2006-03-07'
union all select '1-339-1','财务处','王红',50,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',50,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',20,'替值班','2006-03-20'
union all select '1-339-1','财务','王红',10,'替值班','2006-03-20'
union all select '1-339-1','财务','王',10,'替值班','2006-03-20'
union all select '1-339-1','财务','王',30,'替值班','2006-03-20'
go
create function word( @bm varchar(1000),@bh varchar(1000) )
returns varchar(1000)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(日期 as varchar)+cast(加班原因 as varchar) from tbnew where 编号=@bh and 部门=@bm
return stuff(@sql,1,1,'')
end
select 编号,部门,姓名,sum(加班工资) as 加班工资,dbo.word(编号,部门) as 加班原因 from tbnew group by 部门,姓名,编号
请帮我看一下,为什么查出来的加班原因返回的是NULL
解决方案 »
- 如何在VS2005中实现多个表的更新功能?急啊
- 关于insert into select的问题
- 数据转换的问题
- 这个用触发器 该怎么写啊 高手帮忙写写啊
- 求一sql语句.
- 请教老师一个设计思路?我以一个例子说明。肯定指正。
- 数据库插入数据怎么会出现这样的错误????百思不得其解啊???
- 报错 procedure
- create table table_name1 as select * from table_name2
- 。。。。。。。。。。很急。。在mssql中已经是int的数据类型如何能保持原来数据不丢失的情况下。变成自增的数据类型。谢谢了
- 一个很基本的查询...谢谢哈
- 怎么得到一条记录是该表内的第几条记录?
create function word(@bh varchar(1000),@bm varchar(1000))
把里面的word(编号,部门) 换下位置成
word(部门,编号)
select 编号,部门,姓名,sum(加班工资) as 加班工资,
dbo.word(部门,编号) as 加班原因 --dbo.word(编号,部门) as 加班原因
from tbnew group by 部门,姓名,编号