看懂後就會了:--函數,合並字符串欄位
--測試數據
/*
CREATE table person_info(dept_name varchar(10),position_name varchar(10),person_name varchar(10))
INSERT INTO person_info
SELECT '資訊部','軟件編碼員','小李'
UNION ALL SELECT '資訊部','軟件編碼員','小王'
UNION ALL SELECT '行政部','秘書','小芳'
*/
--合並函數
CREATE FUNCTION FunMergeCharField(@vchA varchar(10),@vchB varchar(10))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r=''
SELECT @r=@r+','+person_name FROM person_info WHERE dept_name=@vchA and position_name=@vchB
RETURN(substring(@r,2,8000))
END
GO
--删除测试
DROP TABLE person_info
DROP FUNCTION FunMergeCharField--調用
SELECT dept_name,position_name,在職人員=dbo.FunMergeCharField(dept_name,position_name)
FROM person_info
GROUP BY dept_name,position_name
go
--測試數據
/*
CREATE table person_info(dept_name varchar(10),position_name varchar(10),person_name varchar(10))
INSERT INTO person_info
SELECT '資訊部','軟件編碼員','小李'
UNION ALL SELECT '資訊部','軟件編碼員','小王'
UNION ALL SELECT '行政部','秘書','小芳'
*/
--合並函數
CREATE FUNCTION FunMergeCharField(@vchA varchar(10),@vchB varchar(10))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r=''
SELECT @r=@r+','+person_name FROM person_info WHERE dept_name=@vchA and position_name=@vchB
RETURN(substring(@r,2,8000))
END
GO
--删除测试
DROP TABLE person_info
DROP FUNCTION FunMergeCharField--調用
SELECT dept_name,position_name,在職人員=dbo.FunMergeCharField(dept_name,position_name)
FROM person_info
GROUP BY dept_name,position_name
go
--创建处理函数
create function f_str(@id varchar(10))
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+field3 from 表 where field1=@id
return(substring(@r,2,8000))
end
go--调用实现查询
select field1,field2=count(*),field3=dbo.f_str(field1)
from 表
group by field1
create table 表(field1 varchar(10),field2 varchar(10),field3 varchar(10))
insert 表 select 'aa','CC','dd'
union all select 'aa','c2','ee'
union all select 'bb','cc','ff'
union all select 'aa','dd','ff'
go--创建处理函数
create function f_str(@id varchar(10))
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+field3 from 表 where field1=@id
return(substring(@r,2,8000))
end
go--调用实现查询
select field1,field2=count(*),field3=dbo.f_str(field1)
from 表
group by field1
go--删除测试
drop table 表
drop function f_str/*--测试结果
field1 field2 field3
---------- ----------- --------------
aa 3 dd,ee,ff
bb 1 ff(所影响的行数为 2 行)
--*/