Синтаксическая ошибка T-SQL: столбец «dbo.Policy.CompanyId» недопустим в списке выбора - PullRequest
0 голосов
/ 30 сентября 2011

Может ли кто-нибудь помочь мне понять, что не так со следующим синтаксисом T-SQL?

SELECT 
    p.CompanyId, COUNT(*) as PolicyCount, c.CompanyId, c.CompanyName
FROM 
    dbo.Policy p
    INNER JOIN dbo.Company c ON p.CompanyId = c.CompanyId
WHERE 
    p.PolicyIssuingDate BETWEEN @StartDate AND @EndDate
GROUP BY
    p.PolicyId

Я получаю следующую синтаксическую ошибку:

Column 'dbo.Policy.CompanyId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Есть предложения?

UPDATE:

Хорошо, благодаря вашим комментариям, ребята, я понял ... Вот решение:

SELECT 
    p.CompanyId, COUNT(p.PolicyId) as PolicyCount, c.CompanyName
FROM 
    dbo.Policy p
    INNER JOIN dbo.Company c ON p.CompanyId = c.CompanyId
WHERE 
    p.PolicyIssuingDate BETWEEN @StartDate AND @EndDate
GROUP BY
    p.CompanyId, c.CompanyName

1 Ответ

1 голос
/ 30 сентября 2011

В соответствии с вашим запросом вы пытаетесь подсчитать записи, имеющие одинаковый policyID и дата выпуска которых находится между @startdate и @enddate Но проблема в том, что вы выбираете companyid, который не входит в группу по пункту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...