如何用存储过程生成的交叉查询结果做一动态报表?(VB+SQL)
下面存储过程怎样做一动态报表?
CREATE procedure MyResult
@strTabName as varchar(50) = 'Q_MyResult', --此处放表名
@strCol as varchar(50) = 'SubjectName', --表头分组依据字段
@strGroup as varchar(50) = 'StudentID',--分组字段
@strNumber as varchar(50) = 'MyResult', --被统计的字段
@strSum as varchar(10) = 'Sum' --运算方式
AS
DECLARE @strSql as varchar(1000), @strTmpCol as varchar(100)
EXECUTE ('DECLARE corss_cursor CURSOR FOR SELECT DISTINCT ' + @strCol + ' from ' + @strTabName + ' for read only ')
begin
SET nocount ON
SET @strsql ='select ' + @strGroup
OPEN corss_cursor
while (0=0)
BEGIN
FETCH NEXT FROM corss_cursor
INTO @strTmpCol
if (@@fetch_status<>0) break
SET @strsql = @strsql + ', ' + @strSum + '(CASE ' + @strCol + ' WHEN ''' + @strTmpCol + ''' THEN ' + @strNumber + ' ELSE Null END) AS ' + @strTmpCol
END
SET @strsql = @strsql + ' from ' + @strTabname + ' group by ' + @strGroup
EXECUTE(@strsql)
IF @@error <>0 RETURN @@error
CLOSE corss_cursor
DEALLOCATE corss_cursor RETURN 0
end
谢谢!!