У меня есть запрос 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
Не могли бы вы рассказать нам немного больше о столе? Есть ли уникальные ключи на столе? Насколько вы заботитесь о WorkOrder и BatchName? Дополнительная информация, подобная этой, поможет предоставить более полезные ответы. (Получение «определенного набора уникальных результатов» по сравнению с «правильным набором уникальных результатов».) – DeadZone
Возможно, у вас должна быть группа для других полей и сумма для суммы и макс для счета-фактуры (если это номер счета-фактуры). –
Мне нужно WorkOrder и BatchName. В основном то, что мне нужно выбрать, это уникальные счета-фактуры с наименьшей датой пакета (которая является датой их получения). Каждая запись в таблице имеет уникальный идентификатор. – haosmark