SQL Server GROUPING и DISTINCT - PullRequest
       0

SQL Server GROUPING и DISTINCT

1 голос
/ 21 февраля 2012

Привет, у меня есть очень сложное заявление о выборе, сделанное бывшим сотрудником в нашей компании. Что он делает, так это возвращает весь список вакансий, на которые претендент подал заявку.Запрос работает нормально, за исключением того, что мне нужно получить только уникальные задания.У меня проблемы с DISTINCT или GROUP BY.Дубликаты случаются, потому что в таблице, которая связывает Задания и Заявителя, есть дубликаты, с которыми я ничего не могу поделать.Так может кто-нибудь помочь мне разобраться в этом?
PS: Пожалуйста, не вините в том, что структура запроса не моя.Спасибо!

         SELECT 
                J.JobsID, 
                J.JobsHeader, 
                I.IndustryName,
                J.JobDescription, 
                J.JobBreif, 
                J.JobRequirement, 
                J.JobLocation, 
                (SELECT CASE WHEN J.HideSalary = 1 THEN 'hidden' ELSE J.Salary END) AS 'Salary',
                J.HideSalary, 
                (SELECT CASE WHEN J.HideCompanyName = 1 THEN 'hidden' ELSE COMP.CompanyName END) AS 'CompanyName',
                J.HideCompanyName, 
                J.CurrentStatus, 
                J.ExperienceInMonth, 
                J.ExperienceInYear, 
                Q.QualificationName, 
                J.HourID, 
                J.Age, 
            J.Gender, 
            L.CityName, 
            J.UAENationals, 
            J.SeniorExecutive, 
            J.StartDate, 
            J.EndDate, 
            S.SpecizationName, 
            CIRT.SpecizationName AS 'CirtificationName', 
            J.AvailType,
            J.CreatedOn, 
            J.CreatedBy, 
            J.ModifiedOn, 
            J.ModifiedBy,
            N.CountryName,
            --ETJA.CreatedOn AS 'AppliedOn',
            '12/01/2012' AS 'AppliedOn',
            ETJA.JobsId AS 'AppliedJobId'


        FROM dbo.EmployeeToJobsApplied ETJA 
        INNER JOIN dbo.Jobs J ON J.JobsID = ETJA.JobsId
        INNER JOIN dbo.Employers COMP ON J.CompanyID = COMP.EmployerId
        LEFT JOIN dbo.Experience E ON J.ExperienceInYear = E.ExperienceID
        LEFT JOIN dbo.Industry I ON J.JobIndustryId = I.IndustryID
        LEFT JOIN dbo.Location L ON J.LocationID = L.CityId
        LEFT JOIN dbo.Qualification Q  ON J.QualificationID = Q.QualificationID
        LEFT JOIN dbo.Nation N ON J.CountryID = N.CountryID
        LEFT JOIN dbo.Specization S  ON J.SpecilizationId = S.SpecizationID
        LEFT JOIN dbo.Specization CIRT ON J.CirtificationId  = CIRT.SpecizationID
        WHERE ETJA.Applied = 1 AND ETJA.EmployeeId=1

1 Ответ

0 голосов
/ 21 февраля 2012

Вы можете добавить DISTINCT к существующему запросу, но я подозреваю, что выбраны несколько столбцов, которые всегда будут уникальными (например, CreatedOn, ModifiedOn).Так что это вряд ли поможет.

Вам нужно будет создать запрос, который просто возвращает подмножество столбцов, которые у вас есть в данный момент.Начните с минимума и убедитесь, что он дает правильный список заданий.Затем начните добавлять дополнительные столбцы - если он прекратит возвращать различные задания, вы не сможете использовать этот столбец в этом запросе.

SELECT DISTINCT
    J.JobsID,
    J.JobsHeader 
FROM dbo.EmployeeToJobsApplied ETJA 
    INNER JOIN dbo.Jobs J ON J.JobsID = ETJA.JobsId
WHERE ETJA.Applied = 1 AND ETJA.EmployeeId=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...