看懂後就會了:--函數,合並字符串欄位
--測試數據
/*
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

解决方案 »

  1.   


    --创建处理函数
    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
      

  2.   

    --测试--测试数据
    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 行)
    --*/
      

  3.   

    字符合並用以上的函數處理,數據統計用count(*)處理。