Sql server 2005 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式
这是我的问题。我犯了那个错误。请帮帮我。谢谢Sql server 2005 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式,sql-server-2005,stored-procedures,Sql Server 2005,Stored Procedures,这是我的问题。我犯了那个错误。请帮帮我。谢谢 ASC ALTER PROCEDURE [dbo].[sp_CostAllocation_Test] @CompanyCode VARCHAR(3), @EmpCode VARCHAR(600), @PayCode VARCHAR(600) AS SELECT CTPY33PAYRP.CTPAPECOD As EmployeeCode, CTPY33PAYRP.CTPAPPCOD As paycode, (select PY11RPTFPD.r
ASC
ALTER PROCEDURE [dbo].[sp_CostAllocation_Test]
@CompanyCode VARCHAR(3),
@EmpCode VARCHAR(600),
@PayCode VARCHAR(600)
AS
SELECT
CTPY33PAYRP.CTPAPECOD As EmployeeCode,
CTPY33PAYRP.CTPAPPCOD As paycode,
(select PY11RPTFPD.rpcol as columntotal from PY11RPTFPD where rppcod =CTPAPPCOD) ,
(SELECT COCODE,CTPAPECOD,CTPAPPCOD
FROM CTPY33PAYRP
WHERE CTPY33PAYRP.COCODE = @CompanyCode
AND CTPY33PAYRP.CTPAPECOD =@EmpCode
AND CTPY33PAYRP.COCODE = @CompanyCode
AND CTPY33PAYRP.CTPAPPCOD=@PayCode) As PayCode_Check,
PY11RPTFPD.RPPCOD As PayType,
(SELECT RPCOL,RPPCOD
FROM PY11RPTFPD,CTPY33PAYRP
WHERE CTPY33PAYRP.CTPAPPCOD=PY11RPTFPD.RPPCOD)
from CTPY33PAYRP,PY11RPTFPD
ORDER BY CTPAPECOD
我不得不说你的命名约定并不完全透明 在不知道表的模式的情况下,有点难以确定,但我猜您在使用此子查询时遇到了问题:
(SELECT COCODE,CTPAPECOD,CTPAPPCOD FROM CTPY33PAYRP
WHERE CTPY33PAYRP.COCODE = @CompanyCode AND CTPY33PAYRP.CTPAPECOD =@EmpCode
AND CTPY33PAYRP.COCODE = @CompanyCodeAND CTPY33PAYRP.CTPAPPCOD=@PayCode) As PayCode_Check,
(SELECT RPCOL,RPPCOD
FROM PY11RPTFPD,CTPY33PAYRP
WHERE CTPY33PAYRP.CTPAPPCOD=PY11RPTFPD.RPPCOD)
使用此子查询:
(SELECT COCODE,CTPAPECOD,CTPAPPCOD FROM CTPY33PAYRP
WHERE CTPY33PAYRP.COCODE = @CompanyCode AND CTPY33PAYRP.CTPAPECOD =@EmpCode
AND CTPY33PAYRP.COCODE = @CompanyCodeAND CTPY33PAYRP.CTPAPPCOD=@PayCode) As PayCode_Check,
(SELECT RPCOL,RPPCOD
FROM PY11RPTFPD,CTPY33PAYRP
WHERE CTPY33PAYRP.CTPAPPCOD=PY11RPTFPD.RPPCOD)
第一种情况是从一个表中选择多个列,第二种情况是从两个表的联接中选择多个列。两个子查询中都没有将结果限制为一行的内容。如果要在选择列表中包含子查询,则子查询必须在主查询中每行返回一行。此外,我从未见过包含多列的子查询
由于我从您的表名和列名中不知道查询要做什么,因此我无法给出多少关于如何修复语法错误的明确建议。我会说将您的子选择保持为每列一列。这就是错误消息告诉您的。此外,您还应该将子查询与主查询关联起来,以便只能使用一个值,或者在子查询中使用聚合函数,以确保主查询中的每个记录只能使用一个值
我还想说,作为旁白,您应该学习ANSI join语法。一开始似乎很棘手,但一旦你习惯了,它就是你的朋友