2013-12-19 1 views
0

У меня есть запрос UNION, который работал в среде Microsoft Access. Ошибка, которую я получаю в SQL Server: «Каждое выражение GROUP BY должно содержать по крайней мере один столбец, который не является внешней ссылкой». Запрос находится в нижнем формате:Запрос доступа в SQL Server разбит

SELECT tblA.ProjectID, 
     tblB.PersonnelID, 
     "TeamMember" AS ProjectRole 
FROM tblA INNER JOIN tblB ON (tblA.ProjectID = tblB.ProjectID) 
    AND (tblA.ProjectID = tblB.ProjectID) 
GROUP BY tblA.ProjectID, tblB.PersonnelID, "TeamMember" 
HAVING ((Not (tblB.PersonnelID) Is Null) AND ((Sum(tblB.Hours))>0)) 

Как получить этот запрос для работы с SQL Server?

+0

вам не нужно делать то же условие '(tblA.ProjectID = tblB.ProjectID)' и нет какого-либо вопроса в запросе, за исключением одинарной кавычки, который 'уже предложил Marin Smith' ... –

+0

Спасибо за отзыв Vishal. Проблема действительно другая. –

ответ

0

AFAIK having относится только к aggragate функции как суммы, так что я переместил not null вещи в where .also котировка должна быть одиночными. Я также поставил критерии соединения в одной круглой скобке. попробуйте это:

SELECT tblA.ProjectID, 
     tblB.PersonnelID, 
     'TeamMember' AS ProjectRole 
    FROM tblA 
INNER JOIN 
     tblB 
    ON (tblA.ProjectID = tblB.ProjectID 
    AND tblA.ProjectID = tblB.ProjectID) 
where tblB.PersonnelID is not null 
GROUP BY 
     tblA.ProjectID 
    , tblB.PersonnelID 
    , 'TeamMember' 
HAVING Sum(tblB.Hours) > 0 
Смежные вопросы