2015-03-02 2 views
-1

У меня есть запрос SQL Server, который выбирает данные на основе определенных критериев, проблема в том, что некоторые из этих данных являются дубликатами. Дубликаты - это только предметы с дубликатом CrewCode, CrewInvoice и Amounts.Как выбрать только уникальные записи (на основе критериев)

Как я могу вернуть только уникальные предметы на основе этого критерия?

Вот что я до сих пор:

SELECT DISTINCT 
    PVDM_DOCS_1_16.docindex1 as CrewCode, 
    PVDM_DOCS_1_16.docindex5 as WorkOrder, 
    PVDM_DOCS_1_16.docindex8 as Amount, 
    PVDM_DOCS_1_16.docindex6 as BatchName, 
    PVDM_DOCS_1_16.docindex2 as CrewInvoice 
FROM 
    PVDM_DOCS_1_16 
INNER JOIN 
    PVDM_DOCS_1_4 ON PVDM_DOCS_1_16.DOCINDEX5=PVDM_DOCS_1_4.DOCINDEX1 
WHERE 
    PVDM_DOCS_1_16.docindex3 BETWEEN DATEADD(MONTH, -6, GETDATE()) AND GETDATE() 
    AND PVDM_DOCS_1_4.DOCINDEX9 != 'Phone' 
    AND ISNUMERIC(PVDM_DOCS_1_16.DOCINDEX8) = 1 
+0

Не могли бы вы рассказать нам немного больше о столе? Есть ли уникальные ключи на столе? Насколько вы заботитесь о WorkOrder и BatchName? Дополнительная информация, подобная этой, поможет предоставить более полезные ответы. (Получение «определенного набора уникальных результатов» по ​​сравнению с «правильным набором уникальных результатов».) – DeadZone

+0

Возможно, у вас должна быть группа для других полей и сумма для суммы и макс для счета-фактуры (если это номер счета-фактуры). –

+0

Мне нужно WorkOrder и BatchName. В основном то, что мне нужно выбрать, это уникальные счета-фактуры с наименьшей датой пакета (которая является датой их получения). Каждая запись в таблице имеет уникальный идентификатор. – haosmark

ответ

0

Макс по каждому пункту, чтобы быть уникальным, группа каждым уникальным элементом.

SELECT DISTINCT 
    Max(PVDM_DOCS_1_16.docindex1) as CrewCode, 
    Max(PVDM_DOCS_1_16.docindex5) as WorkOrder 
    -- Removed to be shorter 
FROM 
    PVDM_DOCS_1_16 
INNER JOIN 
    PVDM_DOCS_1_4 
ON 
    PVDM_DOCS_1_16.DOCINDEX5=PVDM_DOCS_1_4.DOCINDEX1 
WHERE 
    -- ... 
Group By PVDM_DOCS_1_16.docindex1, PVDM_DOCS_1_16.docindex5 

Я хотел бы добавить, что вам может понадобиться изменить 1 или более из ваших where статей к статье having.

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