各位朋友大家好,我有这样一个问题,向大家请教,先谢谢了.
请教这样一个问题:
如何访问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
李四 英语 78
SQL 语句: SELECT * FROM TEST
----------------求个人总成绩---------------------------
李四 241
张三 241
SQL 语句: SELECT NAME ,SUM(GOALS) FROM TEST GROUP BY NAME
----------------求个人所选课程--------------------------
李四 语文 政治 英语
张三 语文 数学 英语
SQL 语句: SELECT NAME ,DBO.STRSUM(NAME) FROM TEST GROUP BY NAME
CREATE 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() 函数不在内部直接写 当前的表和列呢,从而使函数彻底的
具有任意表的共用性?
为什么系统的SUM() ,他就知道是对当前的
select的表操作呢
肯定有这么个记录select对象的机制
如果我们不利用这个机制,本身是一种浪费 是吗