2010-01-19 5 views
1

Access에서 수행해야하는 쿼리에 대해 SQL 코드가 필요합니다. 여러 개의 필드가있는 테이블이 있지만 쿼리에 2 개의 필드 만 있으면됩니다. 1은 날짜 필드입니다. 그 하나의 DateField를 호출 해 봅시다. 다른 하나는 텍스트가 들어있는 필드입니다. lit TextField를 호출 해 봅시다. 쿼리에 필요한 SQL 코드

  • 텍스트 필드의 수는 WHERE 값 = "ThisText"
  • (즉, 얼마나 많은 관계없이 값이 무엇인지가)

    1. 하여 DateField의 COUNT : 나는 다음과 같은 반환하는 쿼리가 필요합니다 값 = "ThatText"
    2. 결과 GROUP BY 년 다시
    3. 같은 쿼리 월이 아니라 결과 GROUP과 (별도의 Q 예정) 텍스트 필드의 COUNT

    귀하의 모든 훌륭한 도움에 미리 감사드립니다.

  • +3

    ... –

    +0

    아니 - 더 실제 작업있다. 그러나 무고한 사람들을 보호하기 위해 모든 들판의 이름을 바꿨습니다. 일반 examnple 스타일의 텍스트는 숙제의 맛을 빌려줍니다! – rick

    답변

    0
    SELECT YEAR/MONTH(DateField), COUNT(DateField), 
         SUM(IIF(TextField='ThisText', 1, 0)), 
         SUM(IIF(TextField='ThatText', 1, 0)) 
    FROM MyTable 
    GROUP BY YEAR/MONTH(DateField) 
    
    +0

    이것이 작동하는 것 같습니다! 난 당신이 뭘하는지 - 내장 COUNT fxn 대신에 특정 값의 인스턴스를 합산하여 일치 = 1과 일치하지 않음 = 0을 지정하고, 그 다음에 합계가되도록 사용자 정의합니다. 모든 의도와 목적은 해당 유형의 전체 숫자와 동일합니다. 나는 정확성을 재확인 할 필요가있다 ... – rick

    +0

    네, 작동합니다. 감사! – rick

    +0

    예, IIF는 기본적으로 "true? yes : no"와 같은 삼항 연산자입니다. –

    2

    쿼리 당 하나의 주어진 집계 함수 만 선택할 수 있다고 생각합니다. 즉, 단일 쿼리에서 COUNT 개의 다른 필드를 요청할 수 없습니다. Here's the reference은 JET SQL의 카운트 기능입니다. 기껏해야 WHERE 절 아래의 그룹화 된 결과 집합에있는 특정 필드의 NULL이 아닌 값의 수를 계산할 수 있습니다.

    +0

    나는 이것을 작동 시키려고 할 때 "aggregate funciton"라인에 오류 메시지가 나타나지만 내 녹슨 SQL이라고 생각했다. 궁극적으로 보고서에 결과가 필요합니다. 어쨌든 쿼리는 보고서에 피드하는 것입니다. 그래서 아마도 각 Q마다 3 개의 Q를 작성해야합니다. 그러면 Q (Q1, Q2 및 Q3)의 결과를 단일 보고서에 포함시킬 수 있습니까? 나는 아래의 다른 2 명의 repsonses를 시험 할 것이다 - 나에게 약간의 분을 줘라. – rick

    +0

    그래, 그것은 나에게 합리적이게 보인다. 이 경우 쿼리는 다음과 같이 보일 것이다 : SELECT COUNT (DateField) FROM table GROUP BY whatever; 선택 COUNT (TextField) 테이블에서 WHERE TextField = 'ThisText'GROUP BY 뭐든간에; SELECT COUNT (TextField) 테이블에서 WHERE TextField = 'ThatText'GROUP BY whatever; – vicatcu

    +0

    @ Tor의 대답이 멋진 기술이라면. 저희에게 알려주십시오! – vicatcu

    0

    방법에 대해이 너무 많은 숙제와 같은 모양

    SELECT 
        Year 
        ,COUNT(DISTINCT DateField) AS NumDateFields 
        ,COUNT(CASE WHEN TextField = 'ThisText' THEN 1 END) AS ThisTextCount 
        ,COUNT(CASE WHEN TextField = 'ThatText' THEN 1 END) AS ThisTextCount 
    GROUP BY Year; 
    

    또는 ... GROUP BY Month