【发布时间】:2012-02-18 17:47:22
【问题描述】:
所以我可以正常工作:
CREATE FUNCTION dbo.GetLiveStream(@UserName NVARCHAR(MAX)) RETURNS TABLE
AS
RETURN (
SELECT DISTINCT l.*
FROM StreamView l
JOIN Friendships f ON f.Sender = @UserName OR f.Recipient = @UserName
WHERE l.Sender <> @UserName
AND l.Recipient <> @UserName
AND ( l.Sender = f.Recipient
OR l.Sender = f.Sender
OR l.Recipient = f.Sender
OR l.Recipient = f.Recipient)
)
GO
但是当尝试执行以下查询时:
SELECT ROW_NUMBER() OVER(ORDER BY DateTime DESC) AS RowNumber,
*
FROM dbo.GetLiveStream('jason')
WHERE RowNumber >= 0
AND RowNumber < 0+ 10;
我收到以下错误:
消息 207,第 16 层,状态 1,第 4 行
列名“行号”无效。
消息 207,第 16 层,状态 1,第 5 行
列名“RowNumber”无效。
请注意,指定 l.* 会返回此错误:
消息 107,第 15 级,状态 1,第 2 行
列前缀“l”与查询中使用的表名或别名不匹配。
GetLiveStream 是一个函数:
RETURN (
SELECT DISTINCT l.*
FROM StreamView l
JOIN Friendships f ON f.Sender = @UserName OR f.Recipient = @UserName
WHERE l.Sender <> @UserName
AND l.Recipient <> @UserName
AND ( l.Sender = f.Recipient
OR l.Sender = f.Sender
OR l.Recipient = f.Sender
OR l.Recipient = f.Recipient) AND f.IsPending = 0
)
如何解决?谢谢。
【问题讨论】:
标签: sql sql-server tsql