[英]Invalid column name 'ProposalTypeID'
您能告訴我,在此存儲過程中我在做什么錯,它一直在抱怨“ ProposalTypeID”。 這是我的代碼:
SELECT assessmentecosystemcreditid,
assessmentversionid,
dbo.tblassessmentecosystemcredit.managementzoneid,
(SELECT proposaltypeid
FROM tblassessment
WHERE assessmentid = (SELECT assessmentid
FROM tblassessmentversion
WHERE assessmentversionid =
dbo.tblassessmentecosystemcredit.assessmentversionid)) AS
ProposalTypeID,
CASE
WHEN sitevaluecurrentscore <= 17
AND ( dbo.tblvegetationzone.eecid > 0 )
AND ( proposaltypeid = 699 ) THEN 0
ELSE numberofcredits
END AS
NumberOfCreditst
FROM dbo.tblassessmentecosystemcredit
INNER JOIN dbo.tblvegetationtype
ON dbo.tblassessmentecosystemcredit.vegtypeid =
dbo.tblvegetationtype.vegtypeid
INNER JOIN dbo.tblmanagementzone
ON dbo.tblassessmentecosystemcredit.managementzoneid =
dbo.tblmanagementzone.managementzoneid
INNER JOIN dbo.tblvegetationzone
ON dbo.tblvegetationzone.vegetationzoneid =
dbo.tblmanagementzone.vegetationzoneid
WHERE dbo.tblassessmentecosystemcredit.assessmentversionid =
@AssessmentVersionID
根據我在查詢中看到的內容,您不能在CASE
語句中引用proposaltypeid
。
表tblassessment
不在頂級SELECT
語句的FROM
部分中。
雖然您也可以在其他表中有一個proposaltypeid
,但是我認為這是造成此問題的原因。
最后,在最后一個WHERE
子句之前,您將需要一個LEFT JOIN
(可以肯定)。
我想查詢更改為下面的代碼(會產生混亂的結果集),然后從那里調它(我不知道,如果你有一個相應的列assessmentid
在其他表(這是在頂級SELECT
)。
如果這樣做,則將LEFT JOIN
的ON條件更改為
TBA.assessmentid = "referencedTable"."correspondingColumn"
SELECT assessmentecosystemcreditid,
assessmentversionid,
dbo.tblassessmentecosystemcredit.managementzoneid,
(SELECT proposaltypeid
FROM tblassessment
WHERE assessmentid = (SELECT assessmentid
FROM tblassessmentversion
WHERE assessmentversionid =
dbo.tblassessmentecosystemcredit.assessmentversionid)) AS ProposalTypeID,
CASE
WHEN sitevaluecurrentscore <= 17
AND ( dbo.tblvegetationzone.eecid > 0 )
AND ( proposaltypeid = 699 ) THEN 0
ELSE numberofcredits
END AS NumberOfCreditst
FROM dbo.tblassessmentecosystemcredit
INNER JOIN dbo.tblvegetationtype
ON dbo.tblassessmentecosystemcredit.vegtypeid =
dbo.tblvegetationtype.vegtypeid
INNER JOIN dbo.tblmanagementzone
ON dbo.tblassessmentecosystemcredit.managementzoneid =
dbo.tblmanagementzone.managementzoneid
INNER JOIN dbo.tblvegetationzone
ON dbo.tblvegetationzone.vegetationzoneid =
dbo.tblmanagementzone.vegetationzoneid
LEFT JOIN tblassessment TBA ON 1 = 1
WHERE dbo.tblassessmentecosystemcredit.assessmentversionid =
@AssessmentVersionID
根據可用的信息,這是一個很籠統的答案,但我認為它將使您走上正確的道路。
更新:
我相信此查詢將為您提供所需的信息:
SELECT assessmentecosystemcreditid,
assessmentversionid,
dbo.tblassessmentecosystemcredit.managementzoneid,
(SELECT proposaltypeid
FROM tblassessment
WHERE assessmentid = (SELECT assessmentid
FROM tblassessmentversion
WHERE assessmentversionid =
dbo.tblassessmentecosystemcredit.assessmentversionid)) AS ProposalTypeID,
CASE
WHEN sitevaluecurrentscore <= 17
AND ( dbo.tblvegetationzone.eecid > 0 )
AND ( proposaltypeid = 699 ) THEN 0
ELSE numberofcredits
END AS NumberOfCreditst
FROM dbo.tblassessmentecosystemcredit
INNER JOIN dbo.tblvegetationtype
ON dbo.tblassessmentecosystemcredit.vegtypeid =
dbo.tblvegetationtype.vegtypeid
INNER JOIN dbo.tblmanagementzone
ON dbo.tblassessmentecosystemcredit.managementzoneid =
dbo.tblmanagementzone.managementzoneid
INNER JOIN dbo.tblvegetationzone
ON dbo.tblvegetationzone.vegetationzoneid =
dbo.tblmanagementzone.vegetationzoneid
-- added/modified below JOINs
INNER JOIN dbo.Assesmentversion AV ON
AV.assessmentversionid = dbo.tblassessmentecosystemcredit.assessmentversionid
INNER JOIN tblassessment TBA ON
TBA.AssessmentID = AV.AssessmentID
WHERE dbo.tblassessmentecosystemcredit.assessmentversionid =
@AssessmentVersionID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.