【发布时间】:2017-11-23 04:39:47
【问题描述】:
我创建了一个包含 NBA 球员统计数据的数据库,只是为了练习 SQL 和 SSRS。我是使用存储过程的新手,但我创建了以下过程,应该(我认为)允许我指定团队和分钟数。
CREATE PROCEDURE extrapstats
--Declare variables for the team and the amount of minutes to use in --calculations
@team NCHAR OUTPUT,
@minutes DECIMAL OUTPUT
AS
BEGIN
SELECT p.Fname + ' ' + p.Lname AS Player_Name,
p.Position,
--Creates averages based on the number of minutes per game specified in @minutes
(SUM(plg.PTS)/SUM(plg.MP))*@minutes AS PTS,
(SUM(plg.TRB)/SUM(plg.MP))*@minutes AS TRB,
(SUM(plg.AST)/SUM(plg.MP))*@minutes AS AST,
(SUM(plg.BLK)/SUM(plg.MP))*@minutes AS BLK,
(SUM(plg.STL)/SUM(plg.MP))*@minutes AS STL,
(SUM(plg.TOV)/SUM(plg.MP))*@minutes AS TOV,
(SUM(plg.FT)/SUM(plg.MP))*@minutes AS FTs,
SUM(plg.FT)/SUM(plg.FTA) AS FT_Percentage,
(SUM(plg.FG)/SUM(plg.MP))*@minutes AS FGs,
SUM(FG)/SUM(FGA) as Field_Percentage,
(SUM(plg.[3P])/SUM(plg.MP))*@minutes AS Threes,
SUM([3P])/SUM([3PA]) AS Three_Point_Percentage
FROM PlayerGameLog plg
--Joins the Players and PlayerGameLog tables
INNER JOIN Players p
ON p.PlayerID = plg.PlayerID
AND TeamID = @team
GROUP BY p.Fname, p.Lname, p.Position, p.TeamID
ORDER BY PTS DESC
END;
然后我尝试通过执行以下查询来使用 SP:
DECLARE @team NCHAR,
@minutes DECIMAL
EXECUTE extrapstats @team = 'OKC', @minutes = 35
SELECT *
当我这样做时,我会收到以下消息:
Msg 263, Level 16, State 1, Line 5
Must specify table to select from.
我尝试了不同的变体,但没有任何效果。我以为 SP 指定了从中选择数据的表。
有什么想法吗?
【问题讨论】:
-
你有一个声明
SELECT *悬在那里。您没有指定要从中选择的表。因此出现错误消息。
标签: sql-server tsql stored-procedures ssms