대명사 함수 내에서 대명 수식 함수를 이동 한 다음 해당 대소 문자 식을 집계 함수 내에 포함시켜야합니다.
SELECT
AVG(CASE WHEN T.[Reported Milestones] LIKE '02 Request Assigned' THEN
DATEDIFF(DAY,P.[ProjectCreatedDate],T.[TaskActualFinishDate])
END)
AS averageassignmentage
참고 작업 "기간"을 다루는 "종료 날짜는"일반적으로 "그 날의 끝"을 참조하지만 DB에 기록하는 것은 "그 날의 시작"을 동일시한다 . 따라서 시작일 시작부터 끝 날짜 시작까지의 일 수를 계산하는 날짜 계산에 하나를 추가하려고합니다. SQL Fiddle
CREATE TABLE Table1
([Reported Milestones] varchar(19), [ProjectCreatedDate] datetime, [TaskActualFinishDate] datetime)
;
INSERT INTO Table1
([Reported Milestones], [ProjectCreatedDate], [TaskActualFinishDate])
VALUES
('02 Request Assigned', '2017-10-01 00:00:00', '2017-10-10 00:00:00'),
('02 Request Assigned', '2017-10-01 00:00:00', '2017-10-10 00:00:00'),
('02 Request Assigned', '2017-10-01 00:00:00', '2017-10-10 00:00:00'),
('xxx', '2017-10-01 00:00:00', NULL),
('xxx', '2017-10-01 00:00:00', NULL)
;
검색어 1에서
시험/예 :
SELECT
AVG(CASE WHEN [Reported Milestones] LIKE '02 Request Assigned' THEN
DATEDIFF(DAY,[ProjectCreatedDate],[TaskActualFinishDate])+1
END)
AS averageassignmentage
, COUNT(CASE WHEN [Reported Milestones] LIKE '02 Request Assigned' THEN
TaskActualFinishDate
END)
AS sample_size
from table1
Results :
| averageassignmentage | sample_size |
|----------------------|-------------|
| 10 | 3 |
사용'end' 경우 후 문. –
나머지 쿼리 및 샘플 데이터를 게시하고 작동하지 않는 방법을 설명하십시오. 오류 메시지가 표시되거나 잘못된 결과가 표시됩니까? 어떤 DBMS를 사용하고 있습니까? – Dai
팁 : 복잡한 'SELECT' 절이있는 경우 하위 쿼리를 사용하여 논리적으로 중간 결과를 구분하여 읽기 쉽도록하는 것이 좋습니다. SQL이 여전히'SELECT'에서 반복 단계와 임시 변수를 허용하지 않는다는 것은 불행한 일입니다. – Dai