如何访问SQL Server底层的机制,得到当前SELECT 的表 ?各位朋友大家好,我有这样一个问题,向大家请教,先谢谢了.
问题不好描述,所以整个过程和背景都写在下面了,请大家帮帮忙了CREATE TABLE TEST (NAME CHAR(10),COURSE CHAR(10),GOALS INT)
INSERT TEST VALUES('张三','语文',80)INSERT TEST VALUES('张三','数学',86)INSERT TEST VALUES('张三','英语',75)INSERT TEST VALUES('李四','语文',78)INSERT TEST VALUES('李四','政治',85)INSERT TEST VALUES('李四','英语',78)----------------基本样式------------------------------
张三 语文 80
张三 数学 86
张三 英语 75
李四 语文 78
李四 政治 85
李四 英语 78SQL 语句: SELECT * FROM TEST
----------------求个人总成绩---------------------------
李四 241
张三 241SQL 语句: SELECT NAME ,SUM(GOALS) FROM TEST GROUP BY NAME
----------------求个人所选课程--------------------------
李四 语文 政治 英语
张三 语文 数学 英语 SQL 语句: SELECT NAME ,DBO.STRSUM(NAME) FROM TEST GROUP BY NAMECREATE FUNCTION STRSUM( @GROUPFELD CHAR(10))
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @STROUT VARCHAR(1024)
SELECT @STROUT = ''
SELECT @STROUT = @STROUT + COURSE + ''
FROM TEST
WHERE NAME = @GROUPFELD
RETURN @STROUT
END
DROP FUNCTION STRSUM
--------------------------------------------------------------
问题是:能不能像系统提供的SUM()函数一样,在写STRSUM()函数的时候,不用在里面写
表 TEST 和字段 NAME ,并且穿三熟的时候就传 COURSE 呢?
我想在SQL Server应该有这样一个机制,记录了,FROM 后面的表 ,于是在SUM()的时候,系统
自己就知道是对哪个表哪个列SUM(),那么请问,我要怎么样才能访问到这个记录呢?
怎么样才能让这里的 STRSUM() 函数不在内部直接写 当前的表和列呢,从而使函数彻底的
具有任意表的共用性?
问题不好描述,所以整个过程和背景都写在下面了,请大家帮帮忙了CREATE TABLE TEST (NAME CHAR(10),COURSE CHAR(10),GOALS INT)
INSERT TEST VALUES('张三','语文',80)INSERT TEST VALUES('张三','数学',86)INSERT TEST VALUES('张三','英语',75)INSERT TEST VALUES('李四','语文',78)INSERT TEST VALUES('李四','政治',85)INSERT TEST VALUES('李四','英语',78)----------------基本样式------------------------------
张三 语文 80
张三 数学 86
张三 英语 75
李四 语文 78
李四 政治 85
李四 英语 78SQL 语句: SELECT * FROM TEST
----------------求个人总成绩---------------------------
李四 241
张三 241SQL 语句: SELECT NAME ,SUM(GOALS) FROM TEST GROUP BY NAME
----------------求个人所选课程--------------------------
李四 语文 政治 英语
张三 语文 数学 英语 SQL 语句: SELECT NAME ,DBO.STRSUM(NAME) FROM TEST GROUP BY NAMECREATE FUNCTION STRSUM( @GROUPFELD CHAR(10))
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @STROUT VARCHAR(1024)
SELECT @STROUT = ''
SELECT @STROUT = @STROUT + COURSE + ''
FROM TEST
WHERE NAME = @GROUPFELD
RETURN @STROUT
END
DROP FUNCTION STRSUM
--------------------------------------------------------------
问题是:能不能像系统提供的SUM()函数一样,在写STRSUM()函数的时候,不用在里面写
表 TEST 和字段 NAME ,并且穿三熟的时候就传 COURSE 呢?
我想在SQL Server应该有这样一个机制,记录了,FROM 后面的表 ,于是在SUM()的时候,系统
自己就知道是对哪个表哪个列SUM(),那么请问,我要怎么样才能访问到这个记录呢?
怎么样才能让这里的 STRSUM() 函数不在内部直接写 当前的表和列呢,从而使函数彻底的
具有任意表的共用性?
这样才能使写出的函数彻底的公用阿
以后凡是用到STRSUM(“列名”) ,就知道是对当前表的“列名”执行字符串的合并操作阿