, 당신이 당신의 CASE
성명에서 proposaltypeid
을 참조 할 수 없습니다 : 여기 내 코드입니다.
표 tblassessment
은 최상위 레벨 SELECT
의 FROM
부분에 없습니다.
다른 테이블에도 proposaltypeid
이있을 수 있지만 귀하의 경우이 문제의 원인이라고 생각합니다.
마지막 WHERE
절 바로 앞에 LEFT JOIN
(반드시)이 있어야합니다.
나는 아래의 코드로 쿼리를 변경하고 (지저분한 결과 집합을 생성 할 것입니다.) 그리고 거기에서 조정합니다. (다른 테이블에있는 assessmentid
에 해당하는 열이 있는지 확실하지 않습니다. 당신이 할 경우 최상위 레벨 SELECT
).
는 다음의 ON 조건을 변경 LEFT JOIN
에
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
그것은 년대 AV에 따라 매우 일반적인 대답은, 쓸모없는 정보이지만, 나는 그것이 당신을 올바른 길로 인도 할 것이라고 생각합니다.
업데이트 :이 질문은 당신이 찾고있는 무엇을 줄 것으로 예상
:
내가 AssessmentID 통해 Assesmentversion 테이블을 참조 할 필요
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
, 그 문제가 지금입니다. – Usher
나는 모두 AssessmentVerionID을 알고 있지만 "Assessment"테이블에는 assessmentverionID 컬럼이 없습니다.하지만 AssessmentVersion 테이블에는 평가 ID가 있습니다. 내가 – Usher
을 연결하는 쿼리를 사용하여 생각하는 이유입니다. 지금 시도하십시오. – Usher