我正在尝试在SQL Server 2005中创建一个简单的存储过程,并且对我遇到的语法错误感到困惑。
两个表都具有相同的结构。 tbl_Users_non_61
为空,已准备好接收数据。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Make_WEEKLY_SUMMARY
AS
BEGIN
SET NOCOUNT ON;
Select (tbl_Users.UserID
, tbl_Users.RegistrationType
, tbl_Users.Datecompleted)
INTO tbl_Users_non_61
FROM
SELECT tbl_Users.UserID
, tbl_Users.RegistrationType
, tbl_Users.Datecompleted
FROM tbl_Users;
END
GO
结果错误:
Msg 102,Level 15,State 1,Procedure Make_WEEKLY_SUMMARY,Line 5
附近的语法不正确
','。**
答案 0 :(得分:3)
由于您只想将记录插入另一个表中,因此语法更清晰:
INSERT INTO tbl_Users_non_61(UserId, RegistrationType, DateCompleted)
SELECT u.UserID, u.RegistrationType, u.Datecompleted
FROM tbl_Users AS u
要回答你的问题,你不需要围绕你的第一个选择( )
,但是你需要围绕你的子选择,那么你需要使用{{对你引用的子查询进行别名1}}:
FROM
答案 1 :(得分:1)
试试这个:
SELECT
tbl_Users.UserID
, tbl_Users.RegistrationType
, tbl_Users.Datecompleted
INTO tbl_Users_non_61
FROM tbl_Users;
当您SELECT ... INTO
时,如果列仅来自一个表,则无需再次SELECT
这些列。即使您必须从多个列中获取数据,您仍然不需要重新选择它们,而是执行连接。