2011-12-11 2 views
-7

나는 최근 3 개월 동안 결과를 표시해야합니다 다음 쿼리를 가지고 : 나는 SQLServer에 관리 Studio 2008 R2에서 실행하려고 할 때이 쿼리에 지금 문제가 왜이 쿼리에 오류가 있습니까?

, 나는 다음과 같은 오류가 발생했습니다

SELECT COUNT(DISTINCT dbo.UserQuiz.QuizID) AS [Total Number of Quizzes], 
    dbo.Divisions.DivisionName, 
    DATENAME(Month, dbo.UserQuiz.DateTimeComplete) AS Month 
FROM dbo.UserQuiz 
INNER JOIN dbo.Quiz 
    ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID 
INNER JOIN dbo.employee 
    ON dbo.UserQuiz.Username = dbo.employee.Username 
RIGHT OUTER JOIN dbo.Divisions 
    ON dbo.employee.DivisionCode = dbo.Divisions.SapCode 

GROUP BY dbo.Divisions.DivisionName, 
    DATENAME(Month, dbo.UserQuiz.DateTimeComplete) 
HAVING (DATENAME(Month, GETDATE()) - 
     DATENAME(Month, dbo.UserQuiz.DateTimeComplete) > 3 

내가하지 왜 :

Msg 102, Level 15, State 1, Line 5 Incorrect syntax near '3'.

+1

서식을 잘 지정하면 읽기 쉬움이 향상 될 수 있으며 좋은 대답을 얻을 가능성이 커집니다. –

+2

나는이 질문에 당신이 믿을 수 없다. – gbn

답변

2

당신은 3

SELECT  
    COUNT(DISTINCT dbo.UserQuiz.QuizID) AS [Total Number of Quizzes], 
    dbo.Divisions.DivisionName, 
    DATENAME(Month, dbo.UserQuiz.DateTimeComplete) AS Month 

FROM dbo.UserQuiz 

INNER JOIN dbo.Quiz 
ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID 

INNER JOIN dbo.employee 
ON dbo.UserQuiz.Username = dbo.employee.Username 

RIGHT OUTER JOIN dbo.Divisions 
ON dbo.employee.DivisionCode = dbo.Divisions.SapCode 

GROUP BY dbo.Divisions.DivisionName, 
DATENAME(Month, dbo.UserQuiz.DateTimeComplete) 

HAVING (
    DATENAME(Month, GETDATE()) 
    - DATENAME(Month, dbo.UserQuiz.DateTimeComplete) > 3 
) -- you were missing this parenthesis 
+0

이 오류가 발생했습니다. 피연산자 데이터 형식 nvarchar가 빼기 연산자에 잘못되었습니다. –

+0

맞아, 당신은 nvarchars 빼기 수 없습니다. 그들을 int로 형변환해야 할 수도 있습니다. – danludwig

+0

어떻게하면되는지 알려주실 수 있습니까? –

0

후 최종 괄호가 필요합니다 나는 당신이 당신의이 ')'HAVi를 그리워 생각 어딘가에.

HAVING (DATENAME(Month, GETDATE()) - DATENAME(Month, dbo.UserQuiz.DateTimeComplete) > 3 
+0

쿼리가 작동하지 않습니다 –

+0

코드, XML 또는 데이터 샘플을 게시하는 경우 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바에서 "코드 샘플"버튼 ('{}) '을 클릭하여 멋지게 형식을 지정하고 구문 강조! –

+0

오류가 발생했습니다. 메시지 8117, 수준 16, 상태 1, 줄 20 nvarchar 피연산자 데이터 형식이 빼기 연산자에 유효하지 않습니다. –

관련 문제