2014-12-01 2 views
-1

필드가있는 테이블이 있습니다 (A, B, C, D, E, F, G, H, I).특정 날짜 범위 내의 모든 제출물을 쿼리하는 방법은 무엇입니까?

이러한 모든 (A, B, C, D, E, F, G, H, I) 필드는 2010-02-24에서 2020-01-18까지의 날짜 필드입니다.

이제 2014 년과 2015 년에 해당하는 모든 (A, B, C, D, E, F, G, H, I) 필드 만 선택하려고합니다.

+1

모두 반환 할 수 있지만 날짜가 2014 년에서 2014 년 사이가 아닌 경우 0 '으로 지정하십시오. BETWEEN ... THEN a ELSE 0 END' 등등. – Mihai

답변

1

당신은 절 and를 사용하는 경우 다른를 추가 할 수 있으며 값 그것은 매우 깨끗 코드가 아닙니다 between

... 
where A between '20140101' and '20153112' 
    and B between '20140101' and '20153112' 
    and C between '20140101' and '20153112' 
    and ... 
+0

감사합니다. 필드를 암기하는 것은 위에서 말한 것처럼 where 절에 최대 40 개까지 올 수 있습니까? – user3150352

+0

예. – Hatsjoem

0

를 사용하여 범위에 있는지 확인할 수 있지만 찾아 기록 할 것 중 하나의 flds A ... @DATESTART 및 @DATEEND 범위 내의 값을 가짐

DECLARE @T TABLE (A DATE,B DATE, C DATE, D DATE, E DATE , F DATE, G DATE, H DATE, I DATE) 
DECLARE @DATESTART DATE = '2010-02-24' 
DECLARE @DATEEND DATE = '2020-01-18' 

INSERT INTO @T VALUES ('2010-02-24','1986-06-27','1968-09-01','1968-01-15','1968-01-18','1986-06-27','1986-06-27','2010-02-24','1986-06-27'), 

SELECT A,B,C,D,E,F,G,H,I FROM @T 
WHERE 
    A BETWEEN @DATESTART AND @DATEEND 
    OR 
    B BETWEEN @DATESTART AND @DATEEND 
    OR 
    C BETWEEN @DATESTART AND @DATEEND 
    OR 
    D BETWEEN @DATESTART AND @DATEEND 
    OR 
    E BETWEEN @DATESTART AND @DATEEND 
    OR 
    F BETWEEN @DATESTART AND @DATEEND 
    OR 
    G BETWEEN @DATESTART AND @DATEEND 
    OR 
    H BETWEEN @DATESTART AND @DATEEND 
    OR 
    I BETWEEN @DATESTART AND @DATEEND 
+0

감사합니다.이 방법에 대해 더 자세히 설명해 주시겠습니까? 내가 A라고 말했을 때, 내 테이블의 필드가 A, B, ........... 등인 것은 아닙니다. 실제 필드 이름은 Sporting Forecast Date, Event Forecast Date ...와 같습니다. .... 등, 그리고 약 50 필드입니다. 감사합니다 – user3150352

+0

그냥 실제 테이블의 이름으로 ... 나 바꾸십시오. A와 같은 것은 [Sporting Forecast Date]가 될 수 있습니다. 또한 temp 테이블 변수를 만들어 테이블 이름으로 바꾸십시오. 각 필드에 대해 예제에서 설정된대로 패턴을 모방합니다. –

+0

데이터베이스 테이블을 설정 한 방법을 다시 살펴 보는 것은 가치가 있습니다. 데이터를 표준화하는 방법을 살펴보십시오. http://en.wikipedia.org/wiki/Database_normalization. 추가 질문이 있으시면 언제든지 문의하십시오. –

관련 문제