Sql INSERT语句的select列表包含的项目少于INSERT列表
我试图从视图和表中插入表变量,这是我试图使用的代码:Sql INSERT语句的select列表包含的项目少于INSERT列表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图从视图和表中插入表变量,这是我试图使用的代码: DECLARE @ResultCodes TABLE(ID_Audit INT, AcctCode VARCHAR(3), BidYear VARCHAR(4), Num_Htls INT, AuditStatus VARCHAR
DECLARE @ResultCodes TABLE(ID_Audit INT,
AcctCode VARCHAR(3),
BidYear VARCHAR(4),
Num_Htls INT,
AuditStatus VARCHAR(50),
Account VARCHAR(3),
X INT, E INT, H INT, H_NLRA INT, N INT, Extra INT)
INSERT INTO @ResultCodes(ID_Audit, AcctCode, BidYear, Num_Htls, AuditStatus, Account,
X, E, H, H_NLRA, N, Extra)
SELECT
ID_Audit,
AcctCode,
BidYear,
COUNT(ID_RFP),
Audit_Status,
Account
FROM
dbo.c_Audit_Rec_Status
WHERE
ID_Status_Audit = 105
GROUP BY ID_Audit,AcctCode,BidYear,Audit_Status,Account
UNION
SELECT
SUM(CASE WHEN ResultCode3 = 'X' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'E' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'H' AND Rate_Basis = 'LRA' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'H' AND Rate_Basis = 'NLRA' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'N' THEN 1 ELSE 0 END),
0
FROM
tbl_FA_Results WHERE AuditDate3 IS NOT NULL
SELECT * FROM @ResultCodes
但我总是犯这个错误
INSERT语句的select列表包含的项目少于INSERT列表。SELECT值的数量必须与INSERT列的数量匹配
我已经看过一百遍了如果我看过一次,它看起来应该是有效的,有人能看到我遗漏了什么吗
编辑
这就是我最终得到的代码,它的工作方式很有魅力。有时只需要第二双眼睛:
DECLARE @ResultCodes TABLE(ID_Audit INT,AcctCode VARCHAR(3),BidYear VARCHAR(4),Num_Htls INT,AuditStatus VARCHAR(50),Account VARCHAR(3),X INT,E INT,H INT,H_NLRA INT,N INT,Extra INT)
INSERT INTO @ResultCodes(ID_Audit,AcctCode,BidYear,Num_Htls,AuditStatus,Account,X,E,H,H_NLRA,N,Extra)
SELECT
ID_Audit,
AcctCode,
BidYear,
COUNT(c_Audit_Rec_Status.ID_RFP),
Audit_Status,
Account ,
SUM(CASE WHEN ResultCode3 = 'X' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'E' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'H' AND Rate_Basis = 'LRA' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'H' AND Rate_Basis = 'NLRA' THEN 1 ELSE 0 END),
SUM(CASE WHEN ResultCode3 = 'N' THEN 1 ELSE 0 END),
0
FROM
dbo.c_Audit_Rec_Status,
tbl_FA_Results
WHERE
c_Audit_Rec_Status.ID_Status_Audit = 105 AND AuditDate3 IS NOT NULL
GROUP BY ID_Audit,AcctCode,BidYear,Audit_Status,Account
大概有15件事
就像6件事。那不行
有关更多信息:mysql?sql server?博士后?oracle?你在insert语句之后选择了六列,而insert语句有二十列。我看得全错了,认为这两个select语句可以一起工作,得到我的12列。找到了解决方案,我将与大家分享这一解决方案,以防其他人遇到类似的事情。我知道错误是什么,这意味着什么,我只是不知道我要去哪里wrong@PsychoCoder从你的问题来看,看起来你根本没有做过搜索。如果你知道,但无论如何也不能弄清楚,最好包括你找到的信息以及为什么你仍然不能弄清楚。
ID_Audit,AcctCode,BidYear,Num_Htls,AuditStatus,Account,X,E,H,H_NLRA,N,Extra
ID_Audit,
AcctCode,
BidYear,
COUNT(ID_RFP),
Audit_Status,
Account