"상태"기간 항목의 합계를 반환하는 쿼리가 있습니다. 지속 시간은 datediff를 사용하여 계산됩니다 (n, datestamp, (현재 상태를 끝내는 날짜 기록을 반환하는 하위 쿼리, 즉 잠긴 후 다음 피팅 "상태 변경"- 항목을 찾습니다)하위 쿼리 내에서 다중 부분 식별자 문제가있는 SQL 쿼리
내 문제는 다음과 같습니다. 쿼리는 여러 부분으로 구성된 식별자 오류를
- INC 테이블이 나에게 "INCIDENT_NUMBER"을주고있다 내가 다른 테이블에서 "번호"와 관련이 느릅 나무를 찾고 있어요
- ACTM1가 보유하고있는 모든 DATESTAMP-을 반환 항목
- ACTA1은 "THENU MBER "그것은 항목은 피팅 상태 변경인지 아닌지에 대한 모든 정보를 보유하고
코드 :
SELECT SUM(DATEDIFF(n, ACTM1.DATESTAMP, END_DATESTAMP_TABLE.END_DATESTAMP))
FROM INC LEFT OUTER JOIN
ACTM1 ON INC.INCIDENT_NUMBER = ACTM1.NUMBER LEFT OUTER JOIN
ACTA1 ON ACTM1.THENUMBER = ACTA1.THENUMBER LEFT OUTER JOIN
/**/
(SELECT ACTM1_1.NUMBER, ACTM1_1.DATESTAMP AS END_DATESTAMP
FROM ACTM1 AS ACTM1_1 LEFT OUTER JOIN
/**/
(SELECT ACTM1_1_1.NUMBER, MIN(ACTM1_1_1.THENUMBER) AS FOLLOWUP_THENUMBER
FROM ACTM1 AS ACTM1_1_1
WHERE (ACTM1_1_1.THENUMBER > /**/ ACTM1_1.THENUMBER)/*I think here lies the problem*/
AND (ACTM1_1_1.[TYPE] IN ('Open', 'Status Change', 'Resolved', 'Closed')))
AS FOLLOWUP_THENUMBER_TABLE
/**/
ON ACTM1_1.NUMBER = FOLLOWUP_THENUMBER_TABLE.NUMBER)
AS END_DATESTAMP_TABLE
/**/
ON ACTM1.NUMBER = END_DATESTAMP_TABLE.NUMBER
WHERE ...
내가 어떤 도움이 의견에 대한 감사 또는 당신이 날 줄 수있는 힌트 것 ,
PS
실제로 말이됩니다. 때로는 하나 이상의 "피팅"상태 변경 항목이 있습니다. 그 항목은 시간순으로 "THENUMBER"로 정렬됩니다. 어쨌든 도움을 주셔서 감사합니다. – Per
비즈니스 측면에서 볼 때 나는 아니지만 SQL 관점에서 볼 때 그렇습니다. group by 절과 함께 집계되지 않은 필드 (예 : ACTM1_1_1.Number)와 결합 된 집계 함수를 가질 수 없습니다. –
아마도 ('TOP (1) NUMBER, THENUMBER ... THENUMBER ASC에 의해 주문하십시오. ') –