2014-09-04 2 views
2

Мне нужно, чтобы количество учителей преподавало конкретные номера курсов, сгруппированные по schoolid и, конечно же,. Я получаю следующее сообщение об ошибке:Ошибка счетчика преобразования varchar в числовой, также с предложением IN

Msg 8114, Level 16, State 5, Line 1. Error converting data type varchar to numeric.

Я должен присоединиться к столу, чтобы гарантировать, что я могу потянуть schoolid. Я относительно новичок в SQL, и я не знаю, что я делаю неправильно. Кажется, есть фундаментальная часть логики, которую я пропускаю. Я ценю любую помощь, которую вы можете предоставить.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо.

SELECT 
TC.COURSE 
,COUNT(tc.teacherUserName) AS TotalTeachers 

FROM Teacherclasses AS Tc 
JOIN Sites AS S ON Tc.Schoolid = S.Schoolid 
WHERE Schoolyear = '2015' 
AND TC.Course IN (
    17.0010000 
, 23.0010000 
, 27.0110000 
, 36.0010000 
, 41.0110000 
, 45.0010000 
, 23.1011070 
, 27.1110070 
, 23.1011080 
, 27.1110080 
, 23.0010010 
, 27.0110010 
, 41.0110010 
, 45.0010010 
, 55.0010050 
, 23.9010000 
, 27.9110000 
, 41.9110000 
, 45.9010000 
, 23.8010000 
, 27.8110000 
, 41.8110000 
, 45.8010000 
) 
GROUP BY TC.Course--, TC.SchoolID 
+0

Ваш список значений IN является числовым, как указано. Я подозреваю, что у вас есть некоторые ценности, которые основаны на символах. Оберните эти значения в одинарные кавычки, чтобы сделать их строковыми литералами. –

ответ

2

Это должно быть сделано.

SELECT 
TC.COURSE 
,COUNT(tc.teacherUserName) AS TotalTeachers 

FROM Teacherclasses AS Tc 
JOIN Sites AS S ON Tc.Schoolid = S.Schoolid 
WHERE Schoolyear = '2015' 
AND TC.Course IN (
    '17.0010000' 
, '23.0010000' 
, '27.0110000' 
, '36.0010000' 
, '41.0110000' 
, '45.0010000' 
, '23.1011070' 
, '27.1110070' 
, '23.1011080' 
, '27.1110080' 
, '23.0010010' 
, '27.0110010' 
, '41.0110010' 
, '45.0010010' 
, '55.0010050' 
, '23.9010000' 
, '27.9110000' 
, '41.9110000' 
, '45.9010000' 
, '23.8010000' 
, '27.8110000' 
, '41.8110000' 
, '45.8010000' 
) 
GROUP BY TC.Course--, TC.SchoolID 
+1

Да, это должно быть. Было бы неплохо объяснить @ JM1, почему это происходит. См. Мой ответ. –

+0

Спасибо @Sean, я ценю помощь, и это исправить. – JM1

+0

Я сделал это в своем первоначальном комментарии к оригинальному сообщению. : D –

3

У вас есть какое-то значение в Teacherclasses.Course, которые не могут быть преобразованы в цифровой, но он должен иметь, чтобы быть обратимым, как вы сравниваете его с числами в вашем предложении IN.

Либо исправьте значение в Teacherclasses.Course, либо передайте свои аргументы между одинарными кавычками в предложении IN.

+0

Спасибо @ Caffé. – JM1

Смежные вопросы