내 테이블에 다음 값을 삽입하는 경우SQL 쿼리를 사용하여 HAVING 절
어떻게 내 쿼리를 시도하고 얻을려고하는 필드 2의 최대 값 입력란 4의 값은Insert into Table1 (Field1, Field2, Field3, Field4, DateField) values (1, 1, 100, 5, "5/10/2012")
Insert into Table1 (Field1, Field2, Field3, Field4, DateField) values (1, 2, 100, 99, "5/10/2012")
Insert into Table1 (Field1, Field2, Field3, Field4, DateField) values (1, 3, 100, 3, "5/10/2012")
특정 날짜까지.
예 위대한 작품을
select isnull(Field4,0) from Table1
where Field1 = 1 and Field3 = 100 and datediff(day,DateField,"5/21/2012") > 0
having Max(Field2) = Field2
. 나는 기대되는 3을 얻는다. 이제 내 질문이 나오는 곳입니다. 내가 그 쿼리
select isnull(Field4,0) from Table1
where Field1 = 1 and Field3 = 110 and datediff(day,DateField,"5/21/2012") > 0
having Max(Field2) = Field2
내가 어떤 결과를 얻을하지 않습니다를 실행하면 입력란 3 등 (110)와 같은 다른 값을 가질 수있다. null이어야하고 isnull (Field4,0)은 0을 내야합니다.하지만 그렇지 않습니다. count (*)를 사용하여 선택 항목을 대체하여 0을 반환하는지 확인하려고했지만 아무 것도 반환하지 않습니다. 나는 잃어 버렸다. 이 테이블이 임시 테이블에 들어가고 다른 테이블의 값과 합쳐지면 0을 반환해야합니다. 감사.
편집 - 새 질문 부분 여기 잘못된 내용으로 isnull을 사용했을 수도 있습니다. 나는 그것을 받아 들일 수있다. 그러나 아무 것도 반환하지 않는 case 문을 작성하려는 경우 행이 반환되지 않으면 0을 반환하지 않습니다.
select count(*) from Table1
where Field1 = 1 and Field3 = 110 and datediff(day,DateField,"5/21/2012") > 0
having Max(Field2) = Field2
위의 코드는 내가 생각하는 것처럼 0 대신에 아무 것도 반환하지 않습니다.
를 사용할 수 있습니다. 나는이 문제를 여기서 해결하려고 나의 대답을 업데이트 할 것이다. –